lernen auf Probe, wahrscheinlich() und unwahrscheinlich() compiler-Hinweise
Wie kann ich demonstrieren für Studierende der usability von likely
und unlikely
compiler-Hinweise (__builtin_expect
)?
Können Sie schreiben, ein Beispiel-code, die wird mehrmals schneller mit diesen Andeutungen Vergleich der code ohne Hinweise.
- kerneltrap.org/node/4705
- Crowder, ja. aber ich will ein Beispiel Programm, in dem die Studierenden können den Unterschied SPÜREN, es nicht zu Lesen in assembler.
- Sie bekommen nicht solch ein Beispiel, denn es ist kein Unterschied zu spüren. Das ist das Schlimmste, hässlichste Art von nutzlos Mikro-Optimierung.
- aber Linux-kernel aktiv verwenden. Auch der Programmierer weiß viel über sein Programm und markieren können selten verwendete code besser als der compiler dies erkennt.
- Linux-kernel ist aktiv schreiben alle möglichen Dinge, die sind schrecklich C. ich bin damit einverstanden kann der Programmierer besser wissen, welche Filiale ist wahrscheinlicher, aber das bedeutet nicht, dass ich Unterstützung hässliche vorzeitige Mikro-Optimierung alle über dem Platz. Es ist wirklich selten, dass diese hässliche
likely
Makros erzeugen keine wahrnehmbaren performance-Vorteil. - Wenn Sie denken, dass wahrscheinlich/unwahrscheinlich nicht geben kann, keinen nutzen, Sie Katze öffnen Sie eine neue Frage. Aber diese Frage eröffnet wurde, auf Wunsch von meinem Freund. Er ist ein CS-Lehrer von erste-Jahr-Studenten, und er wollte Ihnen zeigen, ein wahrscheinlich/unwahrscheinlich Beispiel. Er war nicht in der Lage, zu produzieren, ein Beispiel, so fragte ich diese q. Ich weiß nicht, ist in diesem Beispiel erforderlich, die durch natürlich oder fügt er es von selbst. Aber das Ziel ist es, zu geben, grundlegende Verständnis, wahrscheinlich Studenten.
- Welche Art von erste-Jahr CS Lehrer lehrt die Schüler vorzeitigen Mikro-Optimierung? Er sollte lehren Sie die richtige Sprache erste und höhere Effizienz-überlegungen (wie die Arbeit mit Daten in-place statt der Zuweisung kopiert, effiziente algorithmen mit Bezug zu Zeit und Raum, etc.). Wenn
likely
undunlikely
sind gelehrt in CS-Lehrplan, es sollte ein senior-Jahr Thema. - Seine Russland. Ersten Jahr der high school. Was meinst du als "senior-Jahr"?
- Dieser Lehrer ist der coach von ACM-team, das übergeben halb-Finale oder sogar endgültig. Also, ich denke, er lehrt Sie eine Menge von high-level Optimierung. Auch dies unwahrscheinlich/wahrscheinlich war nicht die erste Lektion, aber es war nur ein Teil der Lektion, in der Mitte des Jahres.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist der, den ich verwenden, ein wirklich ineffiziente Umsetzung der Fibonacci-zahlen:
Demonstrieren, mit GCC:
Wenige hundert Millisekunden weniger. Dieser Gewinn ist aufgrund der Programmierer-aided branch prediction.
Aber jetzt, für das, was der Programmierer sollte wirklich tun, statt:
Compiler-aided runtime profiling, haben wir es geschafft zu reduzieren, von der ursprünglichen 34.290 s zu 17.760 s. Viel besser als mit Programmierer-aided branch prediction!
likely
undunlikely
likely
undunlikely
sind nicht sehr nützlich. Vielleicht auch, dass dies eine wirklich schlechte Umsetzung vonfib()
...likely
undunlikely
eigentlich im obigen code?