[Benchmark] - Schneller??

  • Hallo und guten morgen||tag||abend,

    Ich schreibe gerade an einen Multilingualen benchmark.
    Funktionieren tut er in etwa so (jede sprache muss sich daran halten):
    Es muss eine 4byte lange variable erstellt werden, also ein ganz normaler
    Integer. Dieser muss dan in einer schleife oder goto auf 1mrd gezählt werden.
    die zeit zwischen anfang des Zählens und ende wird gemessen.
    (Vorzugsweise mit der funktion timeGetTime um millisekunden zu erreichen und gleichheit zu waren)

    Jetzt habe ich mich schnell in die Hilfe von AutoIt eingelesen und war relativ schnell in der
    Lage diesen script zu schreiben. Doch...
    erst dachte ich er funktioniert nicht. Doch dan kam das Ergebniss:
    782128ms - das sind 782sekunden
    damit wäre AutoIt abgeschlagen auf den letzten Platz
    deswegen und weil gesagt wird Au3 ist schneller als Ahk
    denke ich mal habe ich einen brutalen fehler gemacht:

    hier mein soruce:

    [autoit]

    #NoTrayIcon

    [/autoit][autoit][/autoit][autoit]

    $i=0
    $ende=0
    $start=DllCall("WinMM.dll", "long", "timeGetTime")
    While($i < 125000000)
    $i=$i+1
    WEnd
    $ende=DllCall("WinMM.dll", "long", "timeGetTime")
    $zeit=($ende[0]-$start[0])*8
    MsgBox(0,"",$zeit)

    [/autoit]

    Ich hoffe ihr findet ihn oder könnt den script noch verschnellern

    PS:
    1. Platz - Assembler - ~750ms
    2. Platz - C++ - ~2500ms
    3. Platz - C# - ~3000ms
    4. Platz - Ahk - ~168744ms (~168sec)
    5. Platz - Au3?

  • Probier das mal:

    [autoit]

    $i=0
    $z=0
    $s=TimerInit()
    For $i = 0 To 125000000
    Next
    $z=TimerDiff($s)
    MsgBox(0,"Timer",$z&"ms")

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Komisch...Also ich hab mit der in Autoit integrierten Timer Funktion gemessen und bin bei ca. 10 Sec. für die 125000000 angekommen. Für 1Mrd. braucht er aber auch über ne Minute...Ich glaube ne for-schleife ist einfach schneller als ne While.


    #NoTrayIcon
    #Include <Timers.au3>
    $i=0
    $ende=0
    $start=_Timer_Init()
    for $i = 0 to 1000000000
    Next
    $ende=_Timer_Diff($start)
    MsgBox(0,"",$ende)
    //Edit: War wohl zu lahm^^