Iterationen Geschwindigkeit

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Iterationen Geschwindigkeit

Beitrag 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()
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Iterationen Geschwindigkeit

Beitrag 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 ^^
Zuletzt geändert von STARGÅTE am 28.04.2012 11:49, insgesamt 2-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: Iterationen Geschwindigkeit

Beitrag von kunstlust »

Danke, hätte ich auch selber drauf kommen können :praise:
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Iterationen Geschwindigkeit

Beitrag 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?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Iterationen Geschwindigkeit

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Ramihyn_
Beiträge: 61
Registriert: 20.06.2007 10:56

Re: Iterationen Geschwindigkeit

Beitrag 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.).
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: Iterationen Geschwindigkeit

Beitrag 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.
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

Re: Iterationen Geschwindigkeit

Beitrag 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
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Iterationen Geschwindigkeit

Beitrag 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.
Antworten