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?
Grundrechnungsarten
-
-
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: -
Ja stimmt..
-
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. -
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.
-
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 -
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 . -
Danke.. ist trotzdem gut zu wissen!
-
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...
-
Ich habs verwendet, aber ich habs im Moment schneller ohne IPP. Welche IPP Version hast du verwendet?
-
-
Tjo, und warum ohne SIMD? Wennst für jeden Pixel den gleichen Krempel machst, könntest da sicher was rausreißen.
-
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 =)
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!