PureBasic 6.40 beta 2 is ready, surprise inside !

Developed or developing a new product in PureBasic? Tell the world about it.
User avatar
STARGÅTE
Addict
Addict
Posts: 2315
Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:

Re: PureBasic 6.40 beta 1 is ready, surprise inside !

Post by STARGÅTE »

Fred wrote: Fri Feb 27, 2026 9:21 pm Purifier should be working as expected
Spotted:
If I enable both, the purifier and thread-safe executable, the program crashes without any information:

Code: Select all

CompilerIf Not #PB_Compiler_Thread 
	CompilerError "Enable Thread-safe."
CompilerEndIf
CompilerIf Not #PB_Compiler_Debugger
	CompilerError "Enable Debugger."
CompilerEndIf

Define String.s

String = "Hello"

Debug String
PB 6.40 Beta 1, x64 ASM and C-backend.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and moreTypeface - Sprite-based font include/module
User avatar
Andre
PureBasic Team
PureBasic Team
Posts: 2167
Joined: Fri Apr 25, 2003 6:14 pm
Location: Germany (Saxony, Deutscheinsiedel)
Contact:

Re: PureBasic 6.40 beta 1 is ready, surprise inside !

Post by Andre »

ColeopterusMaximus wrote: Fri Feb 27, 2026 10:14 pm Also when using ReplaceString() #PB_String_InPlace returns constant not found.

Shall I post this on the bug section?
No. It was replaced in 6.40, see here: viewtopic.php?p=650813#p650813
Bye,
...André
(PureBasicTeam::Docs & Support - PureArea.net | Order:: PureBasic | PureVisionXP)
ColeopterusMaximus
User
User
Posts: 83
Joined: Fri Oct 29, 2010 11:29 am

Re: PureBasic 6.40 beta 1 is ready, surprise inside !

Post by ColeopterusMaximus »

Andre wrote: Fri Feb 27, 2026 10:47 pm No. It was replaced in 6.40, see here: viewtopic.php?p=650813#p650813
I see thanks.

Very nice some of my programs are between 10% to 40% faster now. :D
dibor
Enthusiast
Enthusiast
Posts: 165
Joined: Wed May 20, 2020 5:19 pm
Location: The 3rd planet in the Solar System
Contact:

Re: PureBasic 6.40 beta 1 is ready, surprise inside !

Post by dibor »

Fred wrote: Fri Feb 27, 2026 9:21 pm Purifier should be working as expected
Not in my project :(
viewtopic.php?p=651656#p651656

Same problem with beta 1
Mac Studio M1Max, PB 6.12 Arm64 and x64.
Macbook Air M2, PB 6.12 Arm64 and x64.
Windows 10, PB 6.12 x64 and x86.
Quin
Addict
Addict
Posts: 1165
Joined: Thu Mar 31, 2022 7:03 pm
Location: Colorado, United States
Contact:

Re: PureBasic 6.40 beta 1 is ready, surprise inside !

Post by Quin »

Holy crap, I run away and get a software engineering job with mainstream languages for a few months and Fred redoes the whole string manager? Welp, guess I'm redownloading PB today. Thanks Fred!
Axolotl
Addict
Addict
Posts: 957
Joined: Wed Dec 31, 2008 3:36 pm

Re: PureBasic 6.40 beta 2 is ready, surprise inside !

Post by Axolotl »

Thanks PB-Team.
Just because it worked doesn't mean it works.
PureBasic 6.04 (x86) and <latest stable version and current alpha/beta> (x64) on Windows 11 Home. Now started with Linux (VM: Ubuntu 22.04).
Quin
Addict
Addict
Posts: 1165
Joined: Thu Mar 31, 2022 7:03 pm
Location: Colorado, United States
Contact:

Re: PureBasic 6.40 beta 2 is ready, surprise inside !

Post by Quin »

Oh hell yeah. Thanks Fred!
Fred
Administrator
Administrator
Posts: 18558
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: PureBasic 6.40 beta 2 is ready, surprise inside !

Post by Fred »

Here are some very basic perf tests to toy with:

Code: Select all

OpenConsole()


Start = ElapsedMilliseconds()
For l = 0 To 100000
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
  b$ = "Hello"
Next
; PrintN(b$)
PrintN("Litteral assign: "+Str(ElapsedMilliseconds() - Start) + " ms")

Start = ElapsedMilliseconds()
For l = 0 To 100000
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
  b$ = "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "
Next
; PrintN(b$)
PrintN("Big litteral assign: "+Str(ElapsedMilliseconds() - Start) + " ms")


Start = ElapsedMilliseconds()
For l = 0 To 100000
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
Next
; PrintN(b$)
PrintN("Ucase litteral assign: "+Str(ElapsedMilliseconds() - Start) + " ms")


Start = ElapsedMilliseconds()
a$ = "World World World World World World World World World World World World World World World World World World World World World World World "
For l = 0 To 10000
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
  b$ = UCase(a$ + a$)
Next

; PrintN(b$)
PrintN("Ucase assign: "+Str(ElapsedMilliseconds() - Start) + " ms")

Start = ElapsedMilliseconds()
a$ = "World World World World World World World World World World World World World World World World World World World World World World World "
For l = 0 To 10000
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
  b$ = UCase(a$ + a$ + a$ + "Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello ")
Next

; PrintN(b$)
PrintN("Ucase complex assign: "+Str(ElapsedMilliseconds() - Start) + " ms")

Start = ElapsedMilliseconds()
For l = 0 To 100000
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
  b$ = Str(1550125)
Next

; PrintN(b$)
PrintN("Str assign: "+Str(ElapsedMilliseconds() - Start) + " ms")

Start = ElapsedMilliseconds()
For l = 0 To 100000
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
  b$ = Str(1550125)+" -" +Str(45421545)+ " - " +Str(66666666)
Next

; PrintN(b$)
PrintN("Str concat: "+Str(ElapsedMilliseconds() - Start) + " ms")


Start = ElapsedMilliseconds()
a$ = "World WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld WorldWorld World"
For l = 0 To 1000
  b$ = b$ + a$ 
Next

PrintN("Final length = " + Str(Len(b$)))
PrintN("Large concat: "+Str(ElapsedMilliseconds() - Start) + " ms")


Start = ElapsedMilliseconds()
For l = 0 To 10000
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
  If UCase("Hello my friend") = LCase("Hello my friend")+UCase("HELLOOOOOOOO") : EndIf
Next
PrintN("Comparison dynamic buffer: "+Str(ElapsedMilliseconds() - Start) + " ms")


Procedure.s StringParameterProcedure(a$, b$)
  ProcedureReturn UCase(a$) + LCase(b$)
EndProcedure

Start = ElapsedMilliseconds()
For l = 0 To 100000
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
  a$ = StringParameterProcedure("Hello", "World")
Next
PrintN("Procedure with strings call: "+Str(ElapsedMilliseconds() - Start) + " ms")

PrintN("Finished")
; MessageRequester("", "")
Input()

End
And the results on my computer:

6.30:

Code: Select all

Litteral assign: 165 ms
Big litteral assign: 692 ms
Ucase litteral assign: 2070 ms
Ucase assign: 318 ms
Ucase complex assign: 725 ms
Str assign: 218 ms
Str concat: 500 ms
Final length = 264292
Large concat: 242 ms
Comparison dynamic buffer: 115 ms
Procedure with strings call: 690 ms
Finished
6.40:

Code: Select all

Litteral assign: 80 ms
Big litteral assign: 103 ms
Ucase litteral assign: 1186 ms
Ucase assign: 143 ms
Ucase complex assign: 360 ms
Str assign: 81 ms
Str concat: 482 ms
Final length = 264292
Large concat: 25 ms
Comparison dynamic buffer: 96 ms
Procedure with strings call: 319 ms
Finished
It's always faster for these tests, sometimes up to 10x. Of course slower cases can probably be found as well, but standard ops should be much faster.
User avatar
Kiffi
Addict
Addict
Posts: 1526
Joined: Tue Mar 02, 2004 1:20 pm
Location: Amphibios 9

Re: PureBasic 6.40 beta 2 is ready, surprise inside !

Post by Kiffi »

Hygge
User avatar
skywalk
Addict
Addict
Posts: 4320
Joined: Wed Dec 23, 2009 10:14 pm
Location: Boston, MA

Re: PureBasic 6.40 beta 2 is ready, surprise inside !

Post by skywalk »

A picture with normalized values even better!

It is weird that some use cases are only 2x better?
Does that mean it was already optimized or there is still room for improvement in 6.40?
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum
User avatar
SPH
Enthusiast
Enthusiast
Posts: 640
Joined: Tue Jan 04, 2011 6:21 pm

Re: PureBasic 6.40 beta 2 is ready, surprise inside !

Post by SPH »

With my laptop which is 3 years old max :

6.30b3
Litteral assign: 209 ms
Big litteral assign: 497 ms
Ucase litteral assign: 1328 ms
Ucase assign: 162 ms
Ucase complex assign: 341 ms
Str assign: 149 ms
Str concat: 215 ms
Final length = 264292
Large concat: 113 ms
Comparison dynamic buffer: 74 ms
Procedure with strings call: 582 ms
Finished
6.40a1
Litteral assign: 66 ms
Big litteral assign: 81 ms
Ucase litteral assign: 728 ms
Ucase assign: 107 ms
Ucase complex assign: 217 ms
Str assign: 61 ms
Str concat: 316 ms
Final length = 264292
Large concat: 10 ms
Comparison dynamic buffer: 66 ms
Procedure with strings call: 253 ms
Finished

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 6.12LTS - 64 bits
User avatar
Jacobus
Enthusiast
Enthusiast
Posts: 168
Joined: Wed Nov 16, 2005 7:51 pm
Location: France
Contact:

Re: PureBasic 6.40 beta 2 is ready, surprise inside !

Post by Jacobus »

This optimization is impressive!

IT13, 13th Gen Intel(R) Core(TM) i9-13900H (2.60 GHz)
Système d’exploitation 64 bits, processeur x64, RAM 32,0 GB
Windows 11 Professionnel 25H2, PB 6.40 B2

Litteral assign: 52 ms
Big litteral assign: 59 ms
Ucase litteral assign: 334 ms
Ucase assign: 40 ms
Ucase complex assign: 89 ms
Str assign: 51 ms
Str concat: 141 ms
Final length = 264292
Large concat: 7 ms
Comparison dynamic buffer: 42 ms
Procedure with strings call: 238 ms
PureBasicien tu es, PureBasicien tu resteras.
User avatar
ChrisR
Addict
Addict
Posts: 1595
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: PureBasic 6.40 beta 2 is ready, surprise inside !

Post by ChrisR »

Thanks for the beta2, everything looks good so far with my app :)

Fred wrote: Wed Mar 11, 2026 5:28 pm It's always faster for these tests, sometimes up to 10x. Of course slower cases can probably be found as well, but standard ops should be much faster.
It's indeed much faster everywhere, up to 15 times faster here for "Large concat" but just a bit slower here for "Str concat: 124 ms vs 182 ms"

ps: #PB_String_InPlace is still present in the help for ReplaceString()
mbierly
New User
New User
Posts: 9
Joined: Thu Jan 18, 2024 1:21 am
Location: Pennsylvania, US

Re: PureBasic 6.40 beta 2 is ready, surprise inside !

Post by mbierly »

Thanks Fred and Team for Beta 2. It is looking good so far! Looking forward to doing more work with it.
Post Reply