Schnellste Möglichkeit für den Betrag einer Zahl?



  • Original erstellt von Parapiler:
    nein nicht auf unsigned casten weiss gar nicht ob das geht... aber wie wäre es von anfang an ihn als unsigned int zu deklarieren? somit hast du immer den Betrag

    Jo, und dann baut er noch ne Fallunterscheidung ein, falls er dann doch mal die wirkliche Zahl braucht und nicht nur ihren Betrag :p .



  • das abs(wert) nicht schneller sein kann ist eigentlich klar, ich denk mal du hast im debug compiliert.

    da ist das sicher nicht inline
    also laandet da erst mal was auf dem Aufrufstack

    dann ist in dem call ja noch was zu tun

    int abs(int z)
    {
      if (z>=0)
      {
        return z;
      }
      return -z;
    }
    

    und das sind was mehr sachen zu machen



  • Original erstellt von b7f7:
    das abs(wert) nicht schneller sein kann ist eigentlich klar, ich denk mal du hast im debug compiliert.
    ...
    und das sind was mehr sachen zu machen

    ja, im debug-code.
    aber im release-code sehrt man auch leicht sachen wie
    cwd //vorzeichen von ax nach alles 32 bits von dx tun
    xor ax,dx //falls ax negativ war, 1-erkomplement von ax machen
    sub ax,dx //falls negativ, 2-erkomplement machen
    kann nicht glauben, daß drei so direkte assemblerbefehle lahmer sein können, also rumgespringe.



  • naja, aber das der compiler aus dem rest auch nocht optimalen code macht und das dadurch gleichwertig wird... ist doch auch moeglich, sogar anzunehmen.
    deswegen denk ich da wurden im debugmode wieder nicht aussagekraeftige messungen vorgenommen.



  • Original erstellt von <b7f7>:
    deswegen denk ich da wurden im debugmode wieder nicht aussagekraeftige messungen vorgenommen.

    jo. seh ich auch so. und da das messprogramm geheim bleibt, isses unglaubwürdig.



  • Lass dir doch mal von der msdev den Disaaaemblierten Code ausgeben. Dann wird es vielleicht aussagekräftiger.

    Roland



  • code.debug!=code.release
    da nuetzt es auch nich den asm zu beobachten.



  • Original erstellt von <b7f7>:
    code.debug!=code.release

    Stichwort: Optimierungen



  • volkard
    *******
    wie schauts mit dem FPU befehl FABS aus? sollte doch noch "besser" sein oder?

    bye

    tester



  • Original erstellt von TheTester:
    **volkard
    wie schauts mit dem FPU befehl FABS aus? sollte doch noch "besser" sein oder?
    **

    glaub ich auch nicht.



  • FABS ist für Fließkommazahlen.


Anmelden zum Antworten