最適化の程度または「無料の朝食なし」

今日のソフトウェアエンジニアリングの言葉は「farpotshket」です。これは「壊れた、誰かがそれを修正しようとしたため」という意味のイディッシュ語です。

(c)アンドロゼロゼロ


先日、私たちは、「レギュラーシーズンをキャッシュしておくといいだろう」という質問の仕事に恥ずかしさを感じました。



uncached = function(data_in) { return /_(\d)+(?:#(\d)+)?$/.exec(data_in); };
      
      





このようなことをした



  cached = (function() { var pattern = /_(\d)+(?:#(\d)+)?$/; return function(data_in) { return pattern.exec(data_in); }; })();
      
      





このアイデアは人気がありますが、実際の利益とオーバーヘッドについて考えている人はどれくらいいますか?



比較性能テストの結果は奇妙であることが判明しました-私の期待に反して、違いさえ測定誤差の範囲内でした:



キャッシュなし13,268
キャッシュされた13,070


ある種のプラットフォームとブラウザーの接続に数字がある場合もありますが、それらは有効ですが、費用はいくらですか?



複雑さのレポートを取り、それぞれの機能の指標を見てみましょう:



機能:キャッシュなし
    物理SLOC:3
    論理SLOC:1
    パラメータ数:1
    循環的複雑度:1
    ハルステッドの難易度:2
     Halsteadボリューム:18.094737505048094
    ハルステッドの努力:36.18947501009619

機能:キャッシュ
    物理SLOC:8
    論理SLOC:3
    パラメータ数:0
    循環的複雑度:1
    ハルステッドの難易度:2.666666666666666565
     Halsteadボリューム:22.458839376460833
    ハルステッドの努力:59.89023833722889


絶対数は少ないが、それでもハルステッドコードインジケーターに注意してください-難易度が30%増加し、ゼロに近い利益で努力が65%増加します-何かがうまくいかなかったという良いヒントです。



はい、良いプラクティスと優れたヒントがありますが、それらを賢明に使用し、批判的に評価し、文脈から引き出さないようにする必要があります。

そして、予備的な最適化を行わないでください-最初のプロファイリングとその後の改善のみ。



要するに-ゴミをしないでください。



All Articles