wobei alles bool variablen sind und würde gerne wissen ob es noch eine vereinfachte/zusammengefasste version gibt die aber 100% genau das gleiche liefert
Ich weiß das der aktuelle VC++ compiler schon viel optimiert aber keine Ahnung ob der das noch superduper analysiert und umbaut. Er wird es bestimmt schon irgendwie optimieren aber wie weit weiß ich nicht und das disassembly würde ich jetzt dafür nicht unbedingt analysieren wollen
Naja also da du dort ja mehrfach die selben Ausdrücke verwendest lässt sich das bestimmt besser checken, jetzt aber keine Lust das umzuformen. Weiss jetzt grad keine Seite auswendig wo das drauf steht, aber es gibt da so ein paar Möglichkeiten. Und bei so nem kleinen Ding könnte man KV Tafeln benutzen.
Auf den ersten Blick würde ich mal sagen da die dinger alle verordert sind ist die erste bedingung restriktiver als die 2. so dass nur nen XOR zwischen Child[1] und Child[2] übrig bleibt... -- ...fleißig wie zwei Weißbrote
Also wenn ich mich nicht vertan hab kannst du schreiben: ups Klammer übersehen:
C++:
if ((!child[1] && child[2]) || (!child[2] && (child[1] || m->NeighbourB->SubDivide)))
Habs jetzt auch mal durch Compiler gejagt sollte stimmen. Also kürzer dürfte es auch nicht gehen, hab jetzt eigentlich per KV Tafel soweit optimiert wie es geht, evtl. machst ne Konjunktive Normalform draus, kann sein das es dann weniger Operationen sind, glaub ich aber nicht.
Die Version von Windalf ist ebenfalls korrekt getestet.Dieser Post wurde am 10.09.2006 um 19:02 Uhr von Blubber2063 editiert.
Meiner Meinung nach sollte dort erstmal aufgeräumt werden und diverse Teilausdrücke zu aussagekräftigen Variablen zusammengefasst werden, so in der Art...
Bevor Du so etwas von Hand optimierst, solltest Du ganz genau wissen, dass Du dort Zeit verlierst (was ich nicht glaube). -- Reden ist Schweigen und Silber ist Gold.
@Windalf: ^ ist binäres XOR, das haut bei integern nicht zwingend hin, bzw. du musst es erst "normalisieren". Außerdem lässt sich im ersten Ausdruck eins der Kinder wegoptimieren, wg. (!a ^ !b ^ !c) v (!a ^ b) = (!a ^ b) v (!a ^ !c). Raus kommt dabei dann
Jo das ist richtig, so grosse Ausdrücke sind nicht unbedingt Leserlich, aber ich finde bei bis zu 4 Variablen hat man das mit KV Tavel schnell minimiert, bei mehr Variablen würde ich mir das auch mehrfach überlegen.
@beefy aufgabenstellung lesen (hmm aber im ernst müsste bool nicht im allgemeinen so abgebildet sein das es funzt)
Zitat:
wobei alles bool variablen sind und würde gerne wissen ob
Bearbeitung:
argh Montag morgen. In Frankfurt ist es Scheisse und ich muss mich mit irgendwelchen ICE Radsätzen rumärgern... Die Woche kann nur beschissen werden...
-- ...fleißig wie zwei WeißbroteDieser Post wurde am 11.09.2006 um 11:40 Uhr von Windalf editiert.
aber im ernst müsste bool nicht im allgemeinen so abgebildet sein das es funzt
Ja, müsste, weil Bool-Ausdrücke vor Anwendung eines Bit-Operators implizit nach Integer konvertiert werden. Das ist aber gar nicht nötig, denn ein XOR mit zwei bools schreibt man am einfachsten so: