URL: https://www.overclockers.at/coding-stuff/vb_langsam_33660/page_2 - zur Vollversion wechseln!
zeig wieder mal den code her
leider is das punkteergebnis der benchmarkfunktion sehr undifferenziert und die leistung is um ein drittel auf ~8 mkeys gesunken
Du kennst anscheinend nicht den Effekt von
Dim x, y as Long
Durch dieses Statement werden nicht etwa zwei Long-Variablen deklariert, nämlich x und y, sondern es wird x als Variant und y als Long deklariert. Wenn du in deinem Programm das x typisierst, wird's auch wieder ein Stück schneller.
nein, ich kenn die meisten effekte nicht
ist schon einige zeit her seit ich was gecodet hab
Mhm, da gibt's noch einige Sachen, die du beschleunigen bzw. verbessern könntest.Zitat von FMFlashnein, ich kenn die meisten effekte nicht![]()
ist schon einige zeit her seit ich was gecodet hab
Du kannst dir mit folgendem Code zB die Variable z sparen:Code:While Not quit '= False x = x + 1 z = z + 1 If z = 100000 Then DoEvents z = 0 End If Wend
Allerdings, wenn du eh im Timer das DoEvents aufrufst, wär's hier nicht mehr notwendig.Code:While Not quit x = x + 1 z = z + 1 If x Mod 100000 = 0 Then DoEvents End If Wend

Das mim mod ist um einiges langsamer als die Variante, die er gewählt hat. Divisionen brauchen nun mal ihre Zeit.
Das DoEvents ist auf jeden Fall notwendig, sonst wird das Timer Event nie bearbeitet.
Hmm, stimmt.
Vielleicht sollt' ich doch länger schlafen... 
Zitat von JCIn der Hilfe findest einiges über Optimierungen.
also ich hab diese einfache counter-funktion jetzt mal in c++ mit diesem kleinen prog nachgestellt
#include <iostream.h>
#include <wait.h>
void main(){
unsigned long counter;
char input[100];
cout << "Press Return to start";
cin.getline (input,100,'\n');
counter = 0;
while(counter < 200000000)
counter++;
returnquit();
}
und statt den schlappen 5 millionen rechungen / sek die vb da produziert hat, dauerts hier grad mal 1 sek um von 0 bis 200 000 000 zu zählen! also um den faktor 20 schneller! 
Zitat von FMFlashalso ich hab diese einfache counter-funktion jetzt mal in c++ mit diesem kleinen prog nachgestellt
#include <iostream.h>
#include <wait.h>
void main(){
unsigned long counter;
char input[100];
cout << "Press Return to start";
cin.getline (input,100,'\n');
counter = 0;
while(counter < 200000000)
counter++;
returnquit();
}
und statt den schlappen 5 millionen rechungen / sek die vb da produziert hat, dauerts hier grad mal 1 sek um von 0 bis 200 000 000 zu zählen! also um den faktor 20 schneller!

wie meinst, "mit optimierung compiliert" ? ansich sind die einstellungen schon auf geschwindigkeitsoptimiert ...
Dann optimiert der Compiler wohl nicht besonders toll. Ein richtiger Compiler entfernt die Schleife komplett, wie that gesagt hat. Sogar wenn du das counter nachher noch verwenden solltest.
sind 200 mio additionen / sek für einen xp1600+ @1900+ denn schlecht? wenn ja, was wäre mit guter optimierung zu erreichen?
Erstens ist es schlecht, denn so eine Schleife kann man mit 1 oder hoechstens 2 Takten / Durchlauf machen, also kannst dir eh ausrechnen, was das dann heisst. Andererseits ist das so ein unsinniges Beispiel, das nicht wirklich was ueber den Compiler aussagt. Denn niemand braucht eine Schleife, die nix tut. Erstaunlich ist allerdings, dass die Schleife ueberhaupt ausgefuehrt wird, denn jeder halbwegs vernuenftige Compiler wuerde sie einfach weglassen, womit du unendlich viele Durchlaeufe in einer Zeiteinheit haettest.
ein 3d game in vb - http://www.revolution3d.de - da hast ne geile 3d engine und geht sehr flott
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026