Re: Simple toggle trick
Posted: Fri Aug 22, 2025 8:08 pm
Wow! I sure can stir things up. 

http://www.purebasic.com
https://www.purebasic.fr/english/
What about "x!1"?mk-soft wrote: Fri Aug 22, 2025 6:21 pm Short way for ASM and C backendCode: Select all
Macro Toggle(x) x=~x&1 EndMacro
Code: Select all
EnableExplicit
DisableDebugger
Define t, i, StartTime, t1, t2, t3, t4, t5, t6
#count = 10000000
t = 0
StartTime = ElapsedMilliseconds()
For i = 0 To #count
t = ~ t
Next
t1 = ElapsedMilliseconds() - StartTime
t = 0
StartTime = ElapsedMilliseconds()
For i = 0 To #count
t = Bool(Not t)
Next
t2 = ElapsedMilliseconds() - StartTime
t = 0
StartTime = ElapsedMilliseconds()
For i = 0 To #count
t ! 1
Next
t3 = ElapsedMilliseconds() - StartTime
t = 0
StartTime = ElapsedMilliseconds()
For i = 0 To #count
t = Bool(t = 0)
Next
t4 = ElapsedMilliseconds() - StartTime
t = 0
StartTime = ElapsedMilliseconds()
For i = 0 To #count
t = Abs(t - 1)
Next
t5 = ElapsedMilliseconds() - StartTime
t = 0
StartTime = ElapsedMilliseconds()
For i = 0 To #count
t=~t&1
Next
t6 = ElapsedMilliseconds() - StartTime
EnableDebugger
Debug t1
Debug t2
Debug t3
Debug t4
Debug t5
Debug t6
Code: Select all
t = 15
; correction
If t
t=-1
EndIf
; Further proper use
For i = 0 To 5
t = ~ t
Debug t
Next
Code: Select all
t=~t&1 ; 116-123
t = Bool(t = 0) ; 120-131
t = Bool(Not t) ; 133
t ! 1 ; 138
t = ~ t ; 140
t = Abs(t - 1) ; 500