vb = langsam - Seite 2

Seite 2 von 3 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/vb_langsam_33660/page_2 - zur Vollversion wechseln!


Ringding schrieb am 07.05.2002 um 23:27

zeig wieder mal den code her


FMFlash schrieb am 07.05.2002 um 23:54

leider is das punkteergebnis der benchmarkfunktion sehr undifferenziert und die leistung is um ein drittel auf ~8 mkeys gesunken


Ringding schrieb am 08.05.2002 um 00:13

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.


FMFlash schrieb am 08.05.2002 um 00:26

nein, ich kenn die meisten effekte nicht :)
ist schon einige zeit her seit ich was gecodet hab


JC schrieb am 08.05.2002 um 09:15

Zitat von FMFlash
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.

Code:
    While Not quit '= False
      x = x + 1
      z = z + 1
      If z = 100000 Then
        DoEvents
        z = 0
      End If
    Wend
Du kannst dir mit folgendem Code zB die Variable z sparen:
Code:
    While Not quit
      x = x + 1
      z = z + 1
      If x Mod 100000 = 0 Then
        DoEvents
      End If
    Wend
Allerdings, wenn du eh im Timer das DoEvents aufrufst, wär's hier nicht mehr notwendig.

"While Not quit" ist im Gegensatz zu "While quit = False" doch ein bisserl schneller. :)

In der Hilfe findest einiges über Optimierungen.


Ringding schrieb am 08.05.2002 um 10:11

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.


JC schrieb am 08.05.2002 um 10:19

Hmm, stimmt.

Vielleicht sollt' ich doch länger schlafen... :o


FMFlash schrieb am 08.05.2002 um 11:01

Zitat von JC
In der Hilfe findest einiges über Optimierungen.

hab die hilfe (msdn-cd) leider noch nicht ...


FMFlash schrieb am 15.05.2002 um 19:53

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! :eek:


that schrieb am 15.05.2002 um 21:03

Zitat von FMFlash
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! :eek:

Wenn mans mit Optimierung compiliert, isses sogar noch schneller... ;)

(der Optimizer entfernt die Schleife und die Variable "counter" komplett...)


FMFlash schrieb am 15.05.2002 um 21:33

wie meinst, "mit optimierung compiliert" ? ansich sind die einstellungen schon auf geschwindigkeitsoptimiert ...


Ringding schrieb am 16.05.2002 um 12:33

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.


FMFlash schrieb am 16.05.2002 um 18:28

sind 200 mio additionen / sek für einen xp1600+ @1900+ denn schlecht? wenn ja, was wäre mit guter optimierung zu erreichen?


Ringding schrieb am 16.05.2002 um 19:01

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.


LTD schrieb am 16.05.2002 um 19:07

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