Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
was sie bringen?? naja sie sind da und man kann sie anwenden
nein also im ernst, bit operationen sind manchmal performanter
zb:
Java:
int a = 10;
a = a / 2; //normale division
s = a >>1 // selbe mit bitshift allerdings ist das schneller als der normale / operator
man kann so die performance eigener software verbessern, andererseits wenn du mal ne aufgabe hast die vielleicht rein durch boolsche algebra logic super zu verstehen und zu lösen ist, warum dann nicht auf die weise dran gehen..
das würde ich so pauschal jetzt nicht sagen.. der macht auch nicht alles optimal und gerade bei solchen kleinigkeiten macht man denke ich nicht viel falsch.
ich schaue mir auch hin und wieder mal den code in java bibliotheken an, da sieht man auch wie die entwickler verfahren und das solche optimierungen genutzt werden. falsch ist das nicht.
das würde ich so pauschal jetzt nicht sagen.. der macht auch nicht alles optimal und gerade bei solchen kleinigkeiten macht man denke ich nicht viel falsch.
ich schaue mir auch hin und wieder mal den code in java bibliotheken an, da sieht man auch wie die entwickler verfahren und das solche optimierungen genutzt werden. falsch ist das nicht.
Gerade bei solchen Kleinigkeiten ist der Compiler besser. Wenn es komplexer wird ist man gut beraten den Algorithmus selbst zu optimieren. Aber teilen duch bitschubserei zu ersetzen ist sinnlos.
wenn ich mich richtig errinere hat mein prof gerade zu dem /2 und >>1 bei binarysearch gesagt, dass die bitshift version schneller ist.. das habe ich so auch in einigen codes gesehen. in der hinsicht halte ich das somit nicht für sinnlos..
auch in einem buch über algorithmen habe ich gelesen dass die bitshift operation schneller ist als division und multiplikation.. mann sollte nur drauf achten dass es nicht ausartet denn da kann es wieder sein dass die normale multiplikaiton doch wieder flotter wär als bitshift..
wenn ich mich richtig errinere hat mein prof gerade zu dem /2 und >>1 bei binarysearch gesagt, dass die bitshift version schneller ist.. das habe ich so auch in einigen codes gesehen. in der hinsicht halte ich das somit nicht für sinnlos..
auch in einem buch über algorithmen habe ich gelesen dass die bitshift operation schneller ist als division und multiplikation.. mann sollte nur drauf achten dass es nicht ausartet denn da kann es wieder sein dass die normale multiplikaiton doch wieder flotter wär als bitshift..
Das mag früher mal so gewesen sein und dann auch hauptsächlich in maschinenahen Sprachen. Der Compiler macht manchmal tatsächlich bit operationen aus divisionen (deshalb ist es unnötig es selbst zu tun). Mit heutigen Prozessoren ist das allerdings meistens unnötig, da diese mathematische Operationen mittlerweile auch in einem Zyklus erledigen.
Wie du am Beispiel vom müden Joe gesehen haben müsstest können Divisionen durch eine 2er Potenz nicht einfach durch einen Bitshift ersetzen werden und werden daher auch per Default nicht gemacht. Der Compiler müsste nämlich annehmen können, dass nur positive Werte übergeben werden, bei negativen Zahlen (Zweierkomplement) geht nämlich der Bitshift nicht.
Und das ein Bitshift die gleiche Performance wie eine Addition haben soll, glaube ich dir solange nicht, bis du Beweise aufführst: alleine die Logik für eine Addition ist viel komplexer als die eines Bitshifts.
Ein Bitshift kann komplett parallel ausgeführt werden für eine Addition sind aber noch einige Halbaddierer/Volladdieren in Reihe geschaltet nötig.
Les- und Wartbarkeit von Code ist wichtiger als ein kleiner Performancegewinn. Zumindest in alltäglichen Fällen sollte man daher lieber klar lesbaren Code schreiben, anstatt unnötig zu optimieren.
Geht es um einen Flaschenhals, ist das natürlich etwas Anderes.