[解決済み] 最適化はいつから始まるのか?
質問
Knuthが言ったように。
小さな効率は忘れるべきで、97%くらいはそうです:早すぎる最適化は諸悪の根源です。
これは、Stack Overflow の回答で、「最も効率的なループ メカニズムはどれか」、「SQL 最適化テクニックは何か」といった質問に対してよく出てくるものです ( など ). これらの最適化のヒントとなる質問に対する標準的な回答は、まずコードをプロファイルして問題があるかどうかを確認し、問題がない場合は新しいテクニックは必要ないというものです。
私の質問は、特定のテクニックが異なっていても、特に不明瞭または難読化されていない場合、それは本当に時期尚早の最適化と考えられるのでしょうか?
という Randall Hyde 氏の関連記事を紹介します。 早すぎる最適化の誤謬 .
どのように解決するのですか?
Don Knuth が始めた リテラート・プログラミング 運動は、彼が コンピュータコードの最も重要な機能は、プログラマの意図を人間の読者に伝えることである。 . パフォーマンスの名の下にコードを理解しにくくするようなコーディングのやり方は、時期尚早の最適化です。
最適化の名の下に導入されたある種のイディオムは、非常に一般的になっており 誰もがそれを理解する となり 期待される になったのであって、時期尚早ではない。 例としては、以下のようなものがあります。
-
使用方法 ポインタ演算 のようなイディオムの使用を含む、Cにおける
for (p = q; p < lim; p++)
-
グローバル変数のローカル変数への再バインド のように、Luaでは
local table, io, string, math = table, io, string, math
そんな慣用句を超えて 危険を顧みず近道をする .
すべての最適化は時期尚早です。
-
プログラムが遅すぎる (多くの人がこの部分を忘れています)。
-
あなたが持っている 測定 (プロファイルまたは類似の) を示す 最適化によって状況が改善される可能性がある .
(メモリに最適化することも許されます)。
質問に対する直接的な回答です。
- もし、あなたの"different"テクニックが プログラムを理解するのが難しくなる であれば それは時期尚早の最適化である .
EDIT : コメントを受けて 挿入ソートのような単純なアルゴリズムの代わりにクイックソートを使うことで の別の例です。 誰もが理解し、期待するイディオムです。 . (ライブラリのソートルーチンを使う代わりに自分自身のソートルーチンを書くのであれば、あなたが 非常に な理由があることを望みます)。
関連
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] CPUバウンド」「I/Oバウンド」とは、どのような意味ですか?
-
[解決済み] GHCはどのような最適化を確実に実行することが期待できますか?
-
[解決済み】g++の最適化レベル-O3は危険か?
-
[解決済み] 本番用Webアプリケーションの1秒あたりの「平均」リクエスト数は?
-
[解決済み] なぜJava APIはshortやbyteの代わりにintを使うのですか?
-
[解決済み] ロガー slf4j 文字列の連結の代わりに{}でフォーマットすることの利点
-
[解決済み] JPEG最適化のためのツール?[クローズド]
-
[解決済み] VBAコードの実行時間をどのようにテストしますか?
-
[解決済み] GCC: marchとmtuneはどう違うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コピーオンライトとは何ですか?
-
[解決済み] 最後の手段としてのパフォーマンス最適化戦略【終了しました
-
[解決済み] CPUバウンド」「I/Oバウンド」とは、どのような意味ですか?
-
[解決済み] GHCはどのような最適化を確実に実行することが期待できますか?
-
[解決済み] 本番用Webアプリケーションの1秒あたりの「平均」リクエスト数は?
-
[解決済み] なぜJava APIはshortやbyteの代わりにintを使うのですか?
-
[解決済み] JPEG最適化のためのツール?[クローズド]
-
[解決済み] VBAコードの実行時間をどのようにテストしますか?
-
[解決済み] GCC: marchとmtuneはどう違うのですか?
-
[解決済み] Deflate圧縮のブラウザ互換性とGZIPに対する優位性