Mikrooptimierung ist der Prozess der sorgfältigen Optimierung kleiner Codeabschnitte, um einen wahrgenommenen Mangel in einem bestimmten Aspekt des Betriebs (übermäßige Speichernutzung, schlechte Leistung usw.) zu beheben.
Welche der folgenden Techniken ist die beste Option, um eine Ganzzahl durch 2 zu teilen, und warum? Technik 1: x = x >> 1; Technik 2: x = x / 2; Hier xist eine ganze Zahl.
Wir müssen ständig Strings für die Protokollausgabe erstellen und so weiter. In den JDK-Versionen haben wir gelernt, wann StringBuffer(viele Anhänge, thread-sicher) und StringBuilder(viele Anhänge, nicht thread-sicher) zu verwenden sind. Was ist der Rat zur Verwendung String.format()? Ist es effizient oder müssen wir uns an die Verkettung von Einzeilern halten, bei …
Ich frage mich, wie viel von Ulrich Dreppers Was jeder Programmierer über Speicher aus dem Jahr 2007 wissen sollte, noch gültig ist. Außerdem konnte ich keine neuere Version als 1.0 oder Errata finden.
Alle folgenden Anweisungen machen dasselbe: %eaxauf Null setzen. Welcher Weg ist optimal (erfordert nur wenige Maschinenzyklen)? xorl %eax, %eax mov $0, %eax andl $0, %eax
Ich habe einen leistungskritischen binären Entscheidungsbaum und möchte diese Frage auf eine einzelne Codezeile konzentrieren. Der Code für den Binärbaum-Iterator ist unten mit den Ergebnissen der laufenden Leistungsanalyse aufgeführt. public ScTreeNode GetNodeForState(int rootIndex, float[] inputs) { 0.2% ScTreeNode node = RootNodes[rootIndex].TreeNode; 24.6% while (node.BranchData != null) { 0.2% BranchNodeData b …
In einer anderen Frage schlug die akzeptierte Antwort vor, eine (sehr billige) if-Anweisung im Python-Code durch einen try / exception-Block zu ersetzen, um die Leistung zu verbessern. Abgesehen von Problemen mit dem Codierungsstil und der Annahme, dass die Ausnahme niemals ausgelöst wird, wie viel Unterschied macht es (in Bezug auf …
Diese Frage passt derzeit nicht zu unserem Q & A-Format. Wir erwarten, dass die Antworten durch Fakten, Referenzen oder Fachwissen gestützt werden, aber diese Frage wird wahrscheinlich zu Debatten, Argumenten, Umfragen oder erweiterten Diskussionen führen. Wenn Sie der Meinung sind, dass diese Frage verbessert und möglicherweise erneut geöffnet werden kann, …
Ich habe versucht, extrem leistungskritischen Code (einen schnellen Sortieralgorithmus, der in einer Monte-Carlo-Simulation millionenfach aufgerufen wird) durch Abrollen der Schleife zu optimieren. Hier ist die innere Schleife, die ich zu beschleunigen versuche: // Search for elements to swap. while(myArray[++index1] < pivot) {} while(pivot < myArray[--index2]) {} Ich habe versucht, mich …
Was ist der schnellste Weg, um alle nicht druckbaren Zeichen von einem Stringin Java zu entfernen? Bisher habe ich versucht, einen 138-Byte-String mit 131 Zeichen zu messen: String's replaceAll()- langsamste Methode 517009 Ergebnisse / Sek Kompilieren Sie ein Muster vor und verwenden Sie dann Matcher's replaceAll() 637836 Ergebnisse / Sek …
Ich bin auf diesen Code im Quellcode der .NET- Liste gestoßen : // Following trick can reduce the range check by one if ((uint) index >= (uint)_size) { ThrowHelper.ThrowArgumentOutOfRangeException(); } Anscheinend ist dies effizienter (?) Als if (index < 0 || index >= _size) Ich bin neugierig auf die Gründe …
Gibt es einen Leistungsgewinn (ohne Mikrooptimierung) durch Codierung? float f1 = 200f / 2 im Vergleich zu float f2 = 200f * 0.5 Ein Professor von mir hat mir vor einigen Jahren erzählt, dass Gleitkommadivisionen langsamer sind als Gleitkommamultiplikationen, ohne das Warum zu erläutern. Gilt diese Aussage für die moderne …
Um es klar zu machen, ich werde hier keine Portabilität anstreben, daher sind alle Lösungen, die mich an eine bestimmte Box binden, in Ordnung. Grundsätzlich habe ich eine if-Anweisung, die in 99% der Fälle als wahr ausgewertet wird, und versuche, jede letzte Uhr der Leistung herauszuholen. Kann ich eine Art …
In einer Echtzeitanwendung¹ auf einem ARM Cortex M3 (ähnlich wie STM32F101) muss ich ein Stück des Registers eines internen Peripheriegeräts abfragen, bis es Null ist, und zwar in einer möglichst engen Schleife. Ich benutze Bitbanding, um auf das entsprechende Bit zuzugreifen. Der (Arbeits-) C-Code lautet while (*(volatile uint32_t*)kMyBit != 0); …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.