Grundrechnungsarten

  • Hallo!

    Ich bin mir im moment nicht sicher, aber wäre

    if( (Input2 - Input1) > Threshold )

    oder

    if( Input2 > (Input1 + Threshold) )

    schneller? Oder macht es sogar etwas aus, wenn ich den Vergleichsoperator Größer-Als hinten oder vorne schreib?

    if( (Input1 + Threshold) < Input2 )


    Oder ist alles gleich schnell?

    640K ought to be enough for anybody. :eek2:

  • wie wärs wenn du dir einfach für jede möglichkeit eine schleife mit
    x wiederholungen baust, die zeit speicherst, und dann vergleichst?
    dann weisst dus sicher ...

    mfg
    mexx :devil:

    w.b.f.z.a.r.

  • Zitat von Swoncen

    Oder ist alles gleich schnell?


    Ja. Subtraktionen sind auch nur Additionen (mit vorheriger Ermittlung des Komplements, aber das ist gratis), und Vergleiche mit > sind auch nur Subtraktionen. Du hast also bei jeder Variante die Kosten von zwei Additionen, und die sind wohl immer gleich schnell.

    Aber... bist du dir sicher, daß du diese Frage überhaupt stellen solltest? Wenn dein Programm zu langsam ist, optimiere richtig, statt an solchen winzigen Kleinigkeiten zu feilen. Oder verwende nicht Java... (das ist jetzt eine Annahme).
    Wenn es aber nicht zu langsam ist, dann ist Mikrooptimierung Zeitverschwendung.

    *plantsch*

  • Ich verwende C++ und habe schon an sehr vielen Stellen Optimiert.. Ich programmier ein Motion Detection System und schaffe im Moment bei 640*480 RGB Videos 29,3 FPS ohne SIMD. Ich hab auf Speicheroptimierung schon fast alles optimiert was geht... Jetzt kommts auf die kleinen Dinge an.

    640K ought to be enough for anybody. :eek2:

  • Achja.. warum ich da optimieren will ist, dass ich für jedes Pixel 3 mal solche Vergleiche führen muss. Das sind bei 640*480 307200 Vergleiche in einem Frame.. In Wirklichkeit sinds dann doch nicht immer 3 Vergleiche, weil ich manchmal Vorzeitig überspringen kann, aber detaillierter geh ich da jetzt nicht ein.

    mfg

    640K ought to be enough for anybody. :eek2:

  • taktzahlen für den pentium (asm-befehle):
    add: 1 taktzyklus (2 wenn zweiter operand im memory, 3 wenn erster operand im memory)
    sub: siehe add
    cmp: 1 taktzyklus (2 wenn operand im memory)
    d.h.: sub ist LANGSAMER als cmp, wenn der erste operand im memory ist! (grund: sub speichert das ergebnis im 1.operanden, cmp im flagregister)
    in deinem fall ist es zwar egal, aber ich wollte einfach mit meinem (aus einem buch abgeschriebenen) assemblerwissen angeben:D .

  • Zitat von Swoncen

    Ich verwende C++ und habe schon an sehr vielen Stellen Optimiert.. Ich programmier ein Motion Detection System und schaffe im Moment bei 640*480 RGB Videos 29,3 FPS ohne SIMD. Ich hab auf Speicheroptimierung schon fast alles optimiert was geht... Jetzt kommts auf die kleinen Dinge an.

    verwendest du die IPP? mit der hab ich damals viel rausholen koennen...

    -------------------
    “If you hear hoof beats, you should look for horses, not zebras.”
    --
    "You, Sir, are an Idiot!" - George Hamilton

  • Zitat von Swoncen

    Ich habs verwendet, aber ich habs im Moment schneller ohne IPP. Welche IPP Version hast du verwendet?


    puuh, das war letztes Jahr... Ich glaub das war Version 3 - bin mir aber echt nicht sicher...

    -------------------
    “If you hear hoof beats, you should look for horses, not zebras.”
    --
    "You, Sir, are an Idiot!" - George Hamilton

  • Tjo, und warum ohne SIMD? Wennst für jeden Pixel den gleichen Krempel machst, könntest da sicher was rausreißen.

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • Hat die damals nicht noch IPL geheißen? Ich hab die 4te Version schon verwendet..

    @ Wolfibolfi: Ich mach im Prinzip für jeden Pixel dasselbe, aber unter manchen Bedingungen kann ich Pixel überspringen oder ich kann manche Funktionen in einem Durchlauf zusammenlegen.. das ist schwer zu sagen.. Ich werde auch an einigen Stellen SIMD verwenden, aber das Low-Level Zeugs kommt erst, wenn ich die Algorithmen so gut Optimiert hab, dass mir nichts mehr einfällt =)

    640K ought to be enough for anybody. :eek2:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!