Was ist Boilerplate code , Hot-code-und-Hot-spots?
Ich weiß, dass diese Begriffe in den Kontext der performance-Leistung. Diese Tage bin ich arbeiten, und habe versucht, zu wissen, über diese vom internet aber nicht jedes Beispiel, welches deutlich vorhanden, diese Konzepte mit der Existenz dieser Probleme/Konzepte in der realen Welt Entwicklungs-Szenarien. Kann bitte jemand gründlich erklären diese Begriffe, die Beispiel-Szenarien, und wo diese Begriffe sind wahrscheinlich verwendet.
Dank.
- Eine Frage für die Programmierer stack?
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Boilerplate" hat nichts mit Leistung zu tun: es bedeutet nur standard-code, der erforderlich ist, um eine Anwendung definieren, oder arbeiten mit Rahmen. Es ist code, der wahrscheinlich identisch in jeder Anwendung.
Einem "hot spot", auf der anderen Seite, bedeutet, dass ein Teil des Codes, der ausgeführt wird, viele Male, und daher seine Leistung eine Menge Fragen, um die Gesamtperformance einer Anwendung. In der Regel ein hot-spot ist gekennzeichnet durch die tatsächliche Profilierung: es ist kein hot spot, wenn es ausgeführt wird, viele Male, aber die ist so trivial, dass Ihre Auswirkungen auf die Leistung ist minimal.
Boilerplate-code
"hot code" ist skalierbar, gut geschriebenen code
"hot spots" sind ein Gebiet intensiver Aktivität. Sie sind hot-spots, weil Sie Häufig ausgeführten code.
Einer definition von "hot-spot" region code, in dem der Programm-Zähler verbringt einen guten Bruchteil Ihrer Zeit.
Ein verwandter Begriff ist der "Flaschenhals", die, obwohl schlecht definiert, bezieht sich im Allgemeinen auf code lokalisiert wurde, eine Funktion, routine oder Methode, das verursacht einen höheren Bruchteil der Zeit aufgewendet werden, als notwendig.
Diese beiden Begriffe sind sehr missverständlich, denn es gibt eine riesige ungeschriebene Voraussetzung.
Die Annahme ist, dass es keine Gelegenheiten gibt, zu beschleunigen, ein Programm, das nicht einen hotspot oder einen Engpass.
Speedup-Möglichkeiten kann mehr diffus als das, und wenn Sie nicht gefunden und behoben haben, werden Sie die Leistung limiter.
Lassen Sie mich ein Beispiel geben.
Vor kurzem, bei der Arbeit an einem C++ - Programm von über 300 Zeilen, nahm ich zehn stackshots, weil ich sehen wollte, wie ich könnte das beschleunigen.
Vier von diesen stackshots sah so aus:
Das Programm dauerte 20 Sekunden insgesamt.
Was diese Stapel Proben sagen mir, dass etwa 40% der Zeit, oder 8 Sekunden, ausgegeben am index-operator auf die array-Klasse.
Das sagt mir, ich könnte reduzieren, läuft die Zeit von 20 Sekunden auf 12 Sekunden, geben oder nehmen, wenn ich könnte, Indizierung mehr direkt, nicht durch einen Aufruf der Funktion.
Der speedup wäre 20/12 = 1.67, oder über einen 67% speedup.
(Hinweis: I don ' T give a hoot about "genau", wenn es um timing. Was ich tun wollte, war das problem zu finden.)
Nun könnte man einfach nicht Zustimmen, dass die Methode zum beheben des Problems, aber Sie können sehen, wie ich erkannt , was das problem war, richtig?
OK, wo ist also der "hotspot" und wo ist der "Flaschenhals"?
Klar es ist ein hotspot in der Indizierung operator Funktion, aber ist das, wo ist das problem?
(Eigentlich ist es das gar nicht, weil es drei verschiedene Funktionen.)
Heißt das, ich sollte versuchen, die routine schneller?
Ich weiß nicht einmal er!
Gibt es einen Engpass in form von einigen "langsam routine"?
Nein!
Es gibt keine bestimmte routine, die langsam ist, oder eine "bad-Algorithmus".
Was ich Tat, war machen einen Beschreibung von, was es tut ("Es ist die Indizierung in bestimmten Routinen.") wo dieser Beschreibung bezieht sich ein großer Teil der Zeit.
Der beste Begriff, den ich mit oben kommen kann für diese Dinge ist "Zeit rauben", weil Sie verbringen ein großer Teil der Zeit, Dinge zu tun, die nicht wirklich getan werden.
Mehr über Terminologie und populäre Missverständnisse.
Lesen Defintion : https://en.wikipedia.org/wiki/Boilerplate_code
behandeln Sie es, indem https://projectlombok.org/
Meine Vermutung ist, dass Sie bereits über ausreichende Definitionen für den Begriff "boilerplate". Ich würde wahrscheinlich wollen zurück, was Sie mit der Hilfe von ein Beispiel.
Aus einem Java-hintergrund und kurzem Umzug, Scala, merkt man, dass in Java können Sie nicht die write-Anweisung ohne Semikolon (;). Darüber hinaus ist es nicht ungewöhnlich, um zu schreiben, Tausende von Anweisungen für ein Programm, das wahrscheinlich in der Produktion ausgeführt. Ihre Vermutung ist so gut wie meine, Sie schreiben eine Menge von sich wiederholenden low-impact-code, aber es geschieht, um code, der verlangt von den Java-compiler. Scala ist eine prägnante Sprache, in dem Sinne, dass das Bedürfnis zu schreiben boilerplate-code reduziert wurde. Sie müssen nicht zu schreiben, semi-colons in Scala. Hoffe das ist simpel genug