Geschwindigkeitsvorteil zu C(++)



  • int b = 1000000000;
    1.)
    	while(b!=0)
    		--b;
    2.)
        __asm{
    		mov ecx, 1000000000
    		Schleife:                  
    		loop Schleife
        };
    

    Warum ist die while-Schleife schneller? Ich wollte einen Test machen... Nutze ich zu wenige Prozessoroptimierungen?



  • Prozessor ist ein Intel Core i3.



  • Vielleicht weil Win98 bei so schnellen Schleifen abstürzt, und Intel den loop-Befehl ausgebremst hat und die AMDs dann reihenweise abgestürzt sind, und es war der reine Zufall und keine Absprache und loop ist immernoch gebremst.
    Das weiß dein schlauer Compiler natürlich, aber Du nicht.

    Mit solchen Sachen wirst Du nicht schneller als C oder C++. Keine Chance.
    Du mußt was finden, was der Compiler schlecht kann. Bietet er die Funktionalität von Befehlen wie RDTSC oder BSF in der Standardbibliothek oder Intrinsics nicht an? Kann er mit SSE3 noch nicht gut umgehen?



  • Wenn Du alle Optimierungen anmachst (und anders zu Messen wäre Unfug), macht er aus

    int b = 1000000000;
        while(b!=0)
            --b;
    

    ein bequemes

    xor eax,eax;
    

    falls b später noch verwendet wird. Anderenfalls nur ein

    
    

  • Mod

    Was soll das überhaupt werden? Eine geschwindigkeitsoptimierte Warteschleife? :p



  • camper schrieb:

    Was soll das überhaupt werden? Eine geschwindigkeitsoptimierte Warteschleife? :p

    😃 👍

    Es hilft vielleicht, so etwas wie eine Wurzelziehfunktion für riesengroße Zahlen oder Primzahlzeugs in Asm, Cuda C und C++ zu schreiben.

    Als Analogie ist eventuell ein Rennwagenvergleich passend:

    Sagen wir mal, ein Profirennfahrer fährt mit einem getunten Porsche auf dem Hockenheimring, der unerfahrene Fahranfänger mit dem Formel 1 Wagen. Man kann mit dem Porsche auch auf Straße fahren, die Formel 1 Kiste ist dafür ziemlich Rennstreckenoptimiert.
    Wer von beiden wird nun schneller sein nach 1 Runde und nach 70 Runden Gesamtzeit?

    Und: Preisfrage: was wird wohl im umgekehrten Fall los sein, wenn der Profi mit der Formel 1 Kiste losheizt und der Fahranfänger mit dem getunten Porsche?

    Und Superbonus Extra-Zusatzfrage:
    stellen wir uns mal vor, Fahranfänger ist noch jung irgendwann hat er oder sie den Dreh raus, landet nicht mehr so oft im Kies, zaubert bald eine Bestzeit nach der anderen auf die Straße. Da man Formel 1 Kisten aber nicht auf der normalen Straße fahren darf, fährt Fahranfänger/in in der Freizeit auch mit dem Porsche, aber weils Geld knapp ist, auch öfter mal mit dem Fiat Uno oder - im Suff z.B. auch schon mal mit dem Taxi.

    Vergleichen wir nochmal:
    Porscheprofi gegen Formel1profi:
    wer ist wann schneller in welchem Wagen auf dem Hockenheimring?
    wer ist schneller bei einer Staßenrally mit ähnlichen Rallykisten?
    (man kann wieder vergleichen: die beiden von eben gegen Anfänger und Rallyprofis z.B.)

    Und die Moral von der Geschichte?


Log in to reply