Seite 1 von 1

Iterationen Geschwindigkeit

Verfasst: 28.04.2012 11:29
von kunstlust
Ich habe mal eine einfache Frage, warum dieses einfache Beispiel aus Purebasic gestartet auf meinem Rechner ca. 10 Sekunden dauert
und per Exe compiliert nur 0.03 Sekunden, warum ist der Unterscheid so groß?

Code: Alles auswählen

OpenConsole()
x = 1
y = 1.000001
StartTime = ElapsedMilliseconds() 
For i = 1 To 100000000
  x = x * y
Next
PrintN (Str(ElapsedMilliseconds()-StartTime))
Input()
CloseConsole()

Re: Iterationen Geschwindigkeit

Verfasst: 28.04.2012 11:35
von STARGÅTE
Weil (wenn du startest) der Debugger mit compiliert wird, und dieser nun mal "alles" überwacht.

PS: Du solltest y auch zu einer Float/Double machen, damit der Code ansatzweise sinn macht ^^

Re: Iterationen Geschwindigkeit

Verfasst: 28.04.2012 11:42
von kunstlust
Danke, hätte ich auch selber drauf kommen können :praise:

Iterationen Geschwindigkeit

Verfasst: 22.05.2012 22:46
von kunstlust
Ich habe bei diesem einfachen Beispiel auf verschiedenen Rechner gemerkt, das die Performance selbst auf einem HP Z1 Workstation mit aktuellen Xenon kaum schneller ist, als ein alter 2Core System mit 2.4 GHz. Ist es so, das die reine und simple Berechnungseinheit kaum, von neuen CPU-Techniken profitiert?

Re: Iterationen Geschwindigkeit

Verfasst: 22.05.2012 23:08
von STARGÅTE
kunstlust hat geschrieben:Ist es so, das die reine und simple Berechnungseinheit kaum, von neuen CPU-Techniken profitiert?
Richtig.
Berechnungen können nur auf die mehreren Kerne verteilt werden, wenn sie auch verteilt werden können. (oke der Satz macht viel sinn ^^).
In deinem Beispiel benutzt du erstens keine Threads, somit wird schon von vorherein nur ein Kern genutzt.
Außerdem baut jede Iteration auf die davor auf, somit kannst du diesen "sinnfreien" Code nicht teilen.

Du kannst zB mehrere Kerne nutzen, indem du bei einem Image, das Bild viertels und dann jedem Kern einen Block gibst.

Re: Iterationen Geschwindigkeit

Verfasst: 22.05.2012 23:55
von Ramihyn_
Bzgl. der Originalfrage wegen der Startzeiten - es könnte auch an Deinem Virenscanner liegen. Aus irgendeinem Grund verzögern manche Virenscanner den Start aus der Purebasic IDE heraus ganz erheblich (Microsoft security essentials u.a.).

Re: Iterationen Geschwindigkeit

Verfasst: 24.05.2012 10:40
von kunstlust
STARGÅTE ich bin nur drauf gekommen, weil ich bei http://www.powerbasic.com/products/pbcc/ auf die angeblich so hohen Geschwindigkeit gestoßen bin. Ich war zunächst eintäuscht, doch als ich die Exe erzeugt habe, war mir klar, das PB schneller ist :mrgreen:
Das der Code Blödsinn ist, ist mir klar.

Re: Iterationen Geschwindigkeit

Verfasst: 24.05.2012 12:33
von matbal
@kunstlust

Du vergleichst aber Äpfel mit Birnen. Die Dateitypen stimmten nicht überein. Powerbasic verwendet Fließkommazahlen mit erweiterter Genauigkeit (80 Bit). Du verwendest Ganzzahlen.

Ergebnis von PowerBasic ist 2.68798271729563E+43
Dein Ergebnis ist 1

Die Geschwindigkeitsunterschiede bei gleichem Dateitype sind bei mir minimal (ältetes 32 Bit System):

PowerBasic:
- mit Ext (erweiterter Genauigkeit) 0.17 s,
- mit Double 0.55 s,
- mit Long 0.31 s

PureBasic:
- mit Double 0.59 s
- mit Integer 0.36 s

Iterationen Geschwindigkeit

Verfasst: 24.05.2012 16:18
von kunstlust
@matbal

Danke für den Tip, ich komme von AutoIt, da spielen Datentypen nicht so eine Rolle, aber jetzt ist mir das klar geworden, das ich nicht Stumpf übernehmen konnte, sondern es schon entsprechend anpassen muss und das die Datentypen sehr wichtig sind.