問題タブ [premature-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.
optimization - 最適化が時期尚早なのはいつですか?
クヌートが言ったように、
約 97% の確率で、わずかな効率性を忘れる必要があります。時期尚早の最適化は諸悪の根源です。
これは、「最も効率的なループ メカニズムはどれか」、「SQL 最適化手法はどれか」などの質問に対する Stack Overflow の回答でよく出てくるものです。(など)。これらの最適化のヒントに関する質問に対する標準的な回答は、まずコードをプロファイリングして、問題があるかどうかを確認することです。問題がない場合は、新しい手法は必要ありません。
私の質問は、特定の手法が異なっていても、特に不明瞭または難読化されていない場合、それは本当に時期尚早の最適化と見なすことができるのでしょうか?
The Fallacy of Premature Optimizationと呼ばれる Randall Hyde による関連記事を次に示します。
c# - .Net でのローカル変数の作成
関数の戻り値を受け入れるローカル変数を作成すると、.Net アプリケーション、特に ASP.Net でメモリ使用量またはパフォーマンスが低下することを知りたいだけです。
いう
また
使うべきか
確かに、前者の使用法の方が読みやすくなっています。しかし、メモリ使用量とパフォーマンスはどうでしょうか。
よろしくお願いします 123Developer
c++ - 条件付き評価を並べ替えるとループが高速化されますか?
ちょっと変わった話: 友人for
から、この例のループを次のように再配置するように言われました:
に:
C++ でのパフォーマンスがわずかに向上します。定数値と変数の比較がその逆よりも速いことはわかりません。実行したいくつかの基本的なテストでは、2 つの実装間で速度に違いは見られませんでした。while
この Pythonループのテストでも同じことが言えます。
対:
私が間違っている?私の単純なテストでは速度変動を判断するのに十分ではありませんか? これは他の言語にも当てはまりますか?それとも、これは単なる新しいベスト プラクティスですか?
c# - よりパフォーマンスの高いコードはどれですか?
一部のテキストを に変換するために使用されるコードをいくつか見直していますMD5 Hash
。よく働く。gravatar avatarMD5Hhash
の作成に使用されます。ここにあります :-
MD5CryptoServiceProvider
このメソッドが初めて呼び出されたときに を作成する方法に注目してください。(簡単にするために、ここでは競合状態について心配する必要はありません)。
プロバイダーの作成に使用される行をこれに変更すると、計算コストが高くなるのではないかと思っていました...
さて、このメソッドはどのように使用/消費されますか? それが StackOverflow のホームページであると想像してください -> 各投稿に対して、ユーザーの md5 ハッシュを生成し、グラバター URL を生成できるようにします。したがって、ビューはこのメソッドを数十回呼び出すことができます。
時期尚早の最適化などにストレスを感じて時間を無駄にしないでください...どちらが良いでしょうか?
java - Javaforeachの効率
私はこのようなものを持っています:
それで、 foreachループmyMap.keySet()
で一度呼び出されますか?そうだと思いますが、ご意見をお聞かせください。
myMap.keySet()
このようにforeachを使用すると( )がパフォーマンスに影響するのか、それともこれと同等であるのかを知りたいです。
optimization - 今日のテクノロジーに関して、これらのデータサイズに関する意味のある懸念はありますか?
ログインあたり3.85KBのオーダーで、既存のデータベースレコードに追加のログイン情報を追加します。
これには2つの懸念があります。
1)ログインごとに追加されるオンザワイヤデータが多すぎませんか?
2)これは、ログインごとにデータベースに保存する余分なデータが多すぎますか?
今日のテクノロジーを考えると、これらの有効な懸念はありますか?
バックグラウンド:
具体的な使用量はありませんが、月平均約5,000回のログインがあります。ただし、1秒あたり1000ではなく、1か月あたり1000の数十で、より大規模な顧客に拡大したいと考えています。
米国(私たちの市場)では、ブロードバンドは60%の市場で採用されています。
php - 関数への参照によって文字列を渡すと、処理が高速化されますか?(php)
重複の可能性:
PHP(> = 5.0)では、参照による受け渡しが高速ですか?
参照によってパラメーターの受け渡しを宣言することにより、文字列を関数のローカルスコープにコピーする必要がないため、PHPインタープリターが高速になるのではないでしょうか。このスクリプトは、XMLファイルを何千ものレコードを持つCSVに変換するため、時間の最適化はほとんど重要ではありません。
これでしょうか:
これより速くする:
?
java - array.lengthを呼び出すコストはいくらですか
アプリケーションでforループをfor-eachループに更新しているときに、次のような「パターン」に出くわしました。
それ以外の
ループごとにsize()メソッドを呼び出す必要がないため、コレクションのパフォーマンスが向上することがわかります。しかし、配列では??
そこで、疑問が生じました。array.length
通常の変数よりも高価ですか?
sql - 結合パフォーマンスと体系的な非正規化に関する優れた文献はありますか?
この質問の当然の帰結として、一度に 1 つのテーブルに常にアクセスするために RDMBS を使用して結合の最適化と体系的な非正規化を行うことの利点について相談し、伝えることができる優れた比較研究があるかどうか疑問に思っていました。
具体的には、次の情報が必要です。
- パフォーマンスまたは正規化と非正規化。
- 正規化されたシステムと非正規化されたシステムのスケーラビリティ。
- 非正規化の保守性の問題。
- 非正規化によるモデルの一貫性の問題。
私がここでどこに行くのかを見るためのちょっとした歴史: 私たちのシステムは社内のデータベース抽象化レイヤーを使用していますが、それは非常に古く、複数のテーブルを処理することはできません. そのため、すべての複雑なオブジェクトは、関連する各テーブルで複数のクエリを使用してインスタンス化する必要があります。システムが常に単一のテーブルを使用するようにするために、テーブル全体で体系的な非正規化が使用され、場合によっては 2 ~ 3 レベルの深さでフラット化されます。nn 関係に関しては、データ モデルを慎重に作成して、そのような関係を回避し、常に 1-n または n-1 にフォールバックすることで、問題を回避したようです。
最終結果は、顧客がしばしばパフォーマンスについて不満を述べる、入り組んだ過度に複雑なシステムです。そのようなボトルネックを分析するとき、彼らはシステムが基づいているこれらの基本的な前提に決して疑問を抱かず、常に他の解決策を探します.
私は何か見落としてますか ?私は全体の考えが間違っていると思いますが、どういうわけかそれを証明 (または反証) するための反論の余地のない証拠を欠いています.アプローチは間違っています(一貫したデータモデルについて、私があまりにも妄想的で独断的であることを私に納得させます)。
私の次のステップは、独自のテスト ベンチを構築して結果を収集することです。
---- 編集注 : システムは最初、データベース システムのないフラット ファイルで構築されました...クライアントが Oracle を使用するシステムを主張したため、後でデータベースに移植されました。リファクタリングは行わず、既存のシステムにリレーショナル データベースのサポートを追加しただけです。フラット ファイルのサポートは後に削除されましたが、データベースを活用するためのリファクタリングをまだ待っています。
algorithm - 最新の CPU で二分探索が線形探索よりも高速になるのはどの n ですか?
分岐予測の素晴らしさにより、バイナリ検索は整数の配列を介した線形検索よりも遅くなる可能性があります。一般的なデスクトップ プロセッサでは、二分探索を使用する前に、その配列をどのくらい大きくする必要がありますか? 構造が多くのルックアップに使用されると仮定します。