If x = 1 and x = 2

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

>>Und was hat das mit einem CallBack zu tun?

Hm hab Thread wohl da mit einem Callback verwechselt :oops:

Es muss nicht alles einen Sinn haben :mrgreen:

Hab das grad mal auf einem alten Rechner versucht, da braucht der Code ca. 1-2 Sekunden bis er eine übereinstimmung findet. ( 100.000.000 durchläufe )

Code: Alles auswählen

Procedure Setter(b)
  Shared x,a
  Repeat
    If x = 1
      x = 2
    Else
      x = 1
    EndIf
    a + 1
  ForEver
EndProcedure
start = ElapsedMilliseconds()
CreateThread(@Setter(), b)

Repeat
  If x = 1 And x = 2
    MessageRequester("!!!", Str(ElapsedMilliseconds()-start)+"ms "+Str(a)+" durchläufe")
    a = 0 
    start = ElapsedMilliseconds()
  EndIf
ForEver
Auf meinem Lappy ca. 16ms (ca. 2.000.000 durchläufe)

Wenn ich das ersetze "If x = 1 And x = 2 And x = 1" dann braucht er gleich viel länger :D
Benutzeravatar
KeauHou
Beiträge: 133
Registriert: 23.06.2009 00:22
Computerausstattung: Q9550, GTX260, Corsair Dominator 4GB 1066mhz, 22" Asus 16:10
Wohnort: Vorm Monitor
Kontaktdaten:

Beitrag von KeauHou »

Auf meinem 2,8ghz Quad braucht es 0 ms mit meistens so umd die 100-200 Durchläufe :D
If x = 1 and x = 2
MessageRequester("!!!", "WTF")
EndIf
Es ist möglich!
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Modulo hin oder her, Kaeru Gaman's code ist schneller, wenn auch minimal, und damit besser.
Ende der Diskussion. :mrgreen:
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

das hier bringt bei mir noch häufigere Wotsefucks:

Code: Alles auswählen

Procedure Setter(*x.Integer)
  Repeat
    *x\i!1
  ForEver
EndProcedure

CreateThread(@Setter(), @x)

Repeat
  If x XOr x
    ;MessageRequester("!!!", "WTF")
    Beep_(500,10)
  EndIf
ForEver

aber is ja auch schnuppe :mrgreen:
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Mit solchem Zeug hab ich mich dieses Semester rumgeschlagen. Die Vorlesung hieß
"Nebenläufige Programmierung". Sie läuft bisher erst das dritte mal und wurde auch erst
dieses Jahr als Pflichtvorlesung festgelegt.
Schließlich wird das Programmieren auf Systemen mit mehreren Kernen immer wichtiger in
der heutigen Zeit. Jeder neue Desktop-Rechner und jeder Laptop hat mittlerweile
mindestens einen Dual-Core oder vielleicht sogar eine CUDA-fähige Grafikkarte.

Ich muss sagen, das war bisher eine meiner besten Vorlesungen war.

Ich würde euch ja gerne die Videos, die Folien und das Skript zur Verfügung stellen, wenn
ich dürfte. Deswegen ein kleiner Buchtipp von mir:

"The Art of Multiprocessor Programming" von "Maurice Herlihy & Nir Shavit".

Das ist ein tolles Buch mit allerlei Konzepten um effizient Arbeit auf mehrere Threads zu
verteilen. Die Beispielcodes im Buch sind in Java gehalten und somit leicht verständlich.


Jetzt hab ich zwar wieder viel zu viel ausgeholt, aber ich musste das gerade mal
aloswerden. :mrgreen:
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Beitrag von WPö »

Noch kürzer:
x = 3 - x
Vorher freilich mit 1 oder 2 initialisieren, fertig.

Ob nun eine XODER-Operation (x!1) oder eine SUBtraktion, ist von der Geschwindigkeit her wahrscheinlich wurscht - jedenfalls extrem gering.

WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

WPo hat geschrieben:Noch kürzer:
x = 3 - x
Vorher freilich mit 1 oder 2 initialisieren, fertig.
http://www.purebasic.fr/german/viewtopi ... 706#250706
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Beitrag von WPö »

Kaeru Gaman hat geschrieben:
WPo hat geschrieben:Noch kürzer:
x = 3 - x
Vorher freilich mit 1 oder 2 initialisieren, fertig.
http://www.purebasic.fr/german/viewtopi ... 706#250706
Aua. Hab ich doch glatt drübergelesen. :oops:
Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: If x = 1 and x = 2

Beitrag von NicTheQuick »

Wie wäre es mit:

Code: Alles auswählen

Repeat
  *x\i = 1
  *x\i = 2
ForEver
:mrgreen:
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: If x = 1 and x = 2

Beitrag von HeX0R »

Bild
:mrgreen:
Antworten