問題タブ [micro-optimization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - パフォーマンスが重要な場合、Java の String.format() を使用する必要がありますか?
ログ出力などのために常に文字列を構築する必要があります。JDK のバージョンStringBuffer
を通じて、(多くの追加、スレッド セーフ) およびStringBuilder
(多くの追加、非スレッド セーフ) をいつ使用するかを学びました。
を使用する際のアドバイスは何String.format()
ですか? それは効率的ですか、それともパフォーマンスが重要なワンライナーの連結に固執することを余儀なくされていますか?
たとえば、醜い古いスタイル、
vs. きちんとした新しいスタイル (String.format、おそらく遅い)、
注: 私の特定の使用例は、私のコード全体の何百もの「ワンライナー」ログ文字列です。ループを含まないので、StringBuilder
重すぎます。特に興味がありString.format()
ます。
css - CSSの速度
これは、CSSレンダリングをよりよく理解するのに役立つ質問です。
これが100万行あるとしましょう。
Hello Worldのフォントを赤に変更する最も速い方法はどれですか?
また、「foo」という一意のIDを持つタグが中央にあった場合はどうなりますか。上記のCSSメソッドのどれが最速でしょう。
なぜこれらの方法が使われるのかなどを知っています。ブラウザのレンダリング技術をよりよく理解しようとしているだけで、そのときのテストを行う方法がわかりません。
更新:いい答えガンボ。その外観から、通常のサイトではタグの完全な定義を行う方が速いでしょう。親を見つけて、見つかったすべての親の検索を絞り込むためです。
ただし、かなり大きなCSSファイルがあるという意味では悪いかもしれません。
c++ - 負の整数に対する C++ の最適化
int a; などの負の整数があるとします。
-a のより高速な実装はありますか?
これに対してビット単位の操作を行う必要がありますか?
c - C配列でビット演算を行う最も効率的な方法は何ですか?
次のようなC配列があります。
そして、マスクとして機能する別のもの:
各バイトで、ビットごとの操作を使用して、最初の配列と2番目の配列の結果である別の配列を取得したいと思います。
これを行う最も効率的な方法は何ですか?
回答ありがとうございます。
c++ - 条件付き評価を並べ替えるとループが高速化されますか?
ちょっと変わった話: 友人for
から、この例のループを次のように再配置するように言われました:
に:
C++ でのパフォーマンスがわずかに向上します。定数値と変数の比較がその逆よりも速いことはわかりません。実行したいくつかの基本的なテストでは、2 つの実装間で速度に違いは見られませんでした。while
この Pythonループのテストでも同じことが言えます。
対:
私が間違っている?私の単純なテストでは速度変動を判断するのに十分ではありませんか? これは他の言語にも当てはまりますか?それとも、これは単なる新しいベスト プラクティスですか?
c# - おかしなことに、これはおそらくスタック オーバーフローの問題です
次の手順 (説明が続きます) は、非常に小さなリストでは問題なく機能しますが、リストに含まれるアイテムの数が多い (1/2 百万) 場合、アプリケーションは「応答なし」状態になり、完了するまでに約 2.5 分かかります (非常に悪い)時間)。少なくとも (最終的には) 1 億項目のリストを処理する必要があるアプリケーションを追加する可能性があります。
問題のある手順のコードは次のとおりです。
L は long 値のリストです。_subLists は、各値が L からの値のリストであるソートされたリストであり、いくつかの違いの算術級数シリーズを開始します (関係ありません)。その値に関連付けられたキーは、値に含まれる系列の長さです。
例:
L = {1,2,3,5,6,7,18,20,21} _subLists = {2,<20>} {3,<1,5>}
この手順は、単純に L から算術級数級数を削除します。
c - n = 0 と n = n - n の違い
この質問を読んだとき、誰かが(何年も前に)アセンブラーの観点から、これらの2つの操作は非常に異なると私に言ったことを思い出しました。
これは本当ですか?もしそうなら、なぜそうなのですか?
編集:いくつかの返信で指摘されているように、コンパイラが同じものに最適化するのはかなり簡単だと思います。しかし、私が興味深いと思うのは、コンパイラが完全に一般的なアプローチを採用した場合に、なぜそれらが異なるのかということです。