Für allgemeine Fragen zur Programmierung mit PureBasic.
grapy
Beiträge: 108 Registriert: 09.09.2004 09:05
Beitrag
von grapy » 31.10.2004 00:14
Hallo,
habe mal so zum Testen eine Library Funktion in C geschrieben: inc(*toinc)
und festgestellt, das dieser Code (~1,4 s) doppelt so schnell ist ...
... wie dieser Code (~2,8 s):
echt krass, oder?
grapy
Zuletzt geändert von
grapy am 31.10.2004 16:04, insgesamt 1-mal geändert.
MVXA
Beiträge: 3823 Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:
Beitrag
von MVXA » 31.10.2004 00:47
mmmh, ich find das eher merkwürdig. ich dachte purebasic sei genauso schnell wie C
Falko
Admin
Beiträge: 3535 Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit), Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1 HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:
Beitrag
von Falko » 31.10.2004 01:39
Ist es auch so bei While..Wend? da kriege ich ungefähr 1.82s raus
Code: Alles auswählen
Global Ausgabe.f,Ausgabe1.f,Ausgabe2.f
Zeit=ElapsedMilliseconds()
While test<100000000
test+1
Wend
Zeit1=ElapsedMilliseconds()
Ausgabe=(Zeit1-Zeit)/1000
MessageRequester("Zeitmessung","While/Wend: ~"+Strf(Ausgabe))
> [Edit]Der Debugger bremst das wirklich stark aus
> Ohne sind's natürlich ca. 0,26s
Zuletzt geändert von
Falko am 31.10.2004 02:35, insgesamt 6-mal geändert.
Win11 Pro 64-Bit, PB_6.11b1
Deeem2031
Beiträge: 1232 Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:
Beitrag
von Deeem2031 » 31.10.2004 01:40
PB moved die Variable warscheinlich erst in einen Register erhöht sie da und moved 'se dann zurück, C hingegen wird die ohne ohne den Register erhöhen, das wär jedenfalls eine logische Erklärung dafür.
Sollte Fred, wenn's so ist vielleicht mal ändern.
EDIT: @Falko Is doch Schnuppe welche Schleife du nimmst, sind doch immer die selben, brauch also auch immer gleich lange...
EDIT2: Hmm.., stimmt doch nich. PB macht das auch ohne Register...
Zuletzt geändert von
Deeem2031 am 31.10.2004 01:53, insgesamt 1-mal geändert.
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
MVXA
Beiträge: 3823 Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:
Beitrag
von MVXA » 31.10.2004 01:46
eben nicht
jede scleife hat seine vorzüge.
while / wend z.b. muss im gegensatz zu for / next keine variable einen wert zu ordnen bevor while / wend weiter machen kann.
Kristel
Beiträge: 72 Registriert: 30.08.2004 00:17
Beitrag
von Kristel » 31.10.2004 01:48
grapy hat geschrieben: ...habe mal so zum Testen eine Library Funktion in C geschrieben: inc(*toinc)
Könnten wir uns die Funktion bitte einmal ansehn, denn ich kann mir nicht vorstellen, dass C bei so einer einfach Sache doppelt so schnell ist.
Zuletzt geändert von
Kristel am 31.10.2004 01:49, insgesamt 1-mal geändert.
Deeem2031
Beiträge: 1232 Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:
Beitrag
von Deeem2031 » 31.10.2004 01:49
@LittleFurz: Das meinte ich doch garnicht, ich meinte nur das jede Schleife genauso lange wie die selbe Schleife dauert.. es also egal ist welche Schleife man nimmt, am Ergebniss welche schneller ist ändert sich nichts. Das einzige was passieren kann ist das beide Werte höher/tiefer sind.
Zuletzt geändert von
Deeem2031 am 31.10.2004 01:50, insgesamt 1-mal geändert.
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
freak
PureBasic Team
Beiträge: 766 Registriert: 29.08.2004 00:20
Wohnort: Stuttgart
Beitrag
von freak » 31.10.2004 01:50
"test+1" wird in "INC dword [v_test]" umgewandelt. Das kannste gar nicht schneller machen.
Du hast also irgendwo gewaltig mist gebaut mit deiner Zeitmessung.
Bestimmt war wieder der Debugger an...
MVXA
Beiträge: 3823 Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:
Beitrag
von MVXA » 31.10.2004 01:54
achso
Falko
Admin
Beiträge: 3535 Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit), Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1 HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:
Beitrag
von Falko » 31.10.2004 02:06
Sch.... Debugger.
Code: Alles auswählen
;Debugger bitte ausschalten
Zeit=ElapsedMilliseconds()
For i=1 To 100000000
test+1
Next i
Zeit1=ElapsedMilliseconds()
Ausgabe.f=(Zeit1-Zeit)/1000
;
test=0
Zeit=ElapsedMilliseconds()
Repeat
test+1
Until test=100000000
Zeit1=ElapsedMilliseconds()
Ausgabe1.f=(Zeit1-Zeit)/1000
;
;
test=0
;
Zeit=ElapsedMilliseconds()
While test<100000000
test+1
Wend
Zeit1=ElapsedMilliseconds()
Ausgabe2.f=(Zeit1-Zeit)/1000
MessageRequester("Ausgabe","For/Next: ~"+StrF(Ausgabe)+Chr(10)+Chr(13)+"Repeat/Until: ~"+StrF(Ausgabe1)+Chr(10)+Chr(13)+"While/Wend: ~"+StrF(Ausgabe2))
Jetzt mal ohne Debugger getestet und da kriege ich
0,23s ; 0,18s ; 0,26s raus. (Danke @Freak, habe auch mal ausgemisstet
)
Zuletzt geändert von
Falko am 31.10.2004 02:38, insgesamt 5-mal geändert.
Win11 Pro 64-Bit, PB_6.11b1