問題タブ [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.
c - 中規模のメモリ割り当てに適したサイズはどれくらいですか?
シリアル化システムの場合、データを書き込むためのバッファーを割り当てる必要があります。必要なサイズは事前にわからないため、基本的なパターンはmalloc
N
バイトでrealloc
、さらに必要な場合に使用します。のサイズはN
、ほとんどのオブジェクトを収容するのに十分な大きさであるため、再割り当てはほとんど行われません。
malloc
これにより、他よりも簡単に満たすことができる最適な初期バイト量がおそらくあると思いました。に近い場所だと思いますが、ハウスキーピングのためのスペースが必要かpagesize
どうかは必ずしも正確ではありません。malloc
さて、これは役に立たない最適化であると確信しています。それが本当に重要な場合は、プールを使用できますが、興味があります。start として割り当てるのが最も簡単なバイトのチャンクを教えてくれると考えるプログラマーは私が初めてではありません。これを判別する方法はありますか?
最新の GCC/G++ および/または Linux に特に適用されるこれに対する回答はすべて受け入れられます。
python - Pythonでのモジュールのインポートの最適化
私はDavidBeazleyのPythonリファレンスブックを読んでいて、彼は次のように述べています。
たとえば、多くの平方根演算を実行している場合は、「math.sqrt(x)」と入力するよりも、「from math importsqrt」および「sqrt(x)」を使用する方が高速です。
と:
メソッドやモジュールルックアップを多用する計算の場合、ほとんどの場合、実行する操作を最初にローカル変数に入れて、属性ルックアップを削除することをお勧めします。
私はそれを試してみることにしました:
最初()
2番目()
結果は次のとおりです。
このような最適化はおそらく私には関係ありません。しかし、なぜビーズリーが書いたのとは逆のことが真実になるのか、私は興味があります。また、1秒の違いがあることに注意してください。これは、タスクが簡単であることを考えると重要です。
なぜこうなった?
アップデート:
私は次のようなタイミングを取得しています:
php - IF ステートメント: より効率的なのはどれですか? 多くの小さなもの、またはいくつかの大きなもの?
材料をデータベースに挿入するレシピ アプリのフォームがあります。まだ何も提出されていない場合、栄養価は「0」と表示されます。それ以外の場合は、post 値に更新されます。
栄養表示の私の構造は次のとおりです。
...そして約20項目続きます。質問は:
1 つの if/else ステートメントを使用してコードをリファクタリングし、2 つの異なるフォーム (動的および静的) を表示する方が効率的でしょうか?それともそのままの方がよいでしょうか?
objective-c - Objective-C カテゴリを多数持つことに欠点はありますか?
プロジェクト間で共有したい Objective-C カテゴリのコードがいくつかあります。私たちが取ることができる(少なくとも)2つのアプローチがあります:
- それらをクラスごとに1つのカテゴリに入れ、次のように呼びます
UIView+SGBExtensions
- 次に、用途に応じてさまざまなカテゴリに分類します。たとえば
UIView+SGBLayout
、UIView+SGBDrawing
、 などです。
私の本能は、後者の方がより説明的であり、チェリーピックできるため、後者を使用することです. ただし、ほとんどのアプリには共有コードのほとんどが含まれているため、多くのカテゴリを使用するとパフォーマンスやアプリのサイズに影響を与える可能性があることを少し心配しています. Objective-C カテゴリを多数持つことに欠点はありますか?
jquery - DOM要素の可視性を切り替える前に、その可視性を確認する価値はありますか?それとも、これは時期尚早の最適化ですか?
次のjQueryコードを検討してください。
私の質問:
- show()コマンドを発行する前に、要素の可視性を確認する価値はありますか?
- つまり、DOMの書き込みはDOMの読み取りよりもコストがかかりますか?また、このパターンには小さなパフォーマンスの最適化が含まれていますか?
- または、ユーティリティがないことの可視性チェックであり、show()コマンドを単純に無条件に発行する方がクリーンなコードでしょうか?
c++ - スワップがC++でXor演算を使用しない理由
Xor演算を使用して効果的なスワップ関数を実装できることを学びました。このような:
しかし、インターネット上で見つけることができるすべてのスワップの実装は、基本的に次のようになります。
VC ++ 2010でテストしたため、コンパイラは上記の2つの形式に対して同じコードを生成しなかったようです。最初のコードは、よりも速く実行されstd::swap
ます。最初のものにポータブルまたは他の問題がありますか?私は英語を母国語とせず、C ++が苦手なので、間違いを訂正してください。
(編集者注:テストは、std::swap
インライン化できるリリースビルドではなく、最適化されていないデバッグビルドで行われた可能性があります。デバッグビルドのベンチマークは無意味です。コンパイラは通常、xor-swapをより効率的なものに最適化しません。)
python - Pythonでは、イテラブルのすべてのアイテムでメソッドを呼び出す方法はありますか?
重複の可能性:
Python に結果のないマップはありますか?
プログラムで、イテラブルに含まれる各アイテムに対してインプレース メソッドを迅速かつ効率的に呼び出したい場合がよくあります。(簡単に言うと、for ループのオーバーヘッドは受け入れられません)。draw()
良い例は、各Sprite
オブジェクトを呼び出したい場合のスプライトのリストです。
私はこのようなことができることを知っています:
[sprite.draw() for sprite in sprite_list]
しかし、返されたリストを使用していないため、リスト内包表記が誤用されているように感じます。機能についても同様map
です。時期尚早の最適化のために私を石で打ちますが、戻り値のオーバーヘッドも望んでいません。
私が知りたいのは、おそらく以下に提案する仮想関数のように、今説明したことを実行できるメソッドが Python にあるかどうかです。
do_all(sprite_list, draw)
java - x > -1 vs x >= 0、パフォーマンスの違いはありますか
先生がこれを落とすのを一度聞いたことがありますが、それ以来ずっと悩まされています。x
整数が 0 以上かどうかを確認したいとしましょう。これを確認するには 2 つの方法があります。
と
この先生によると、その>
時は少し速いだろう>=
。この場合は Java でしたが、彼によると、これは C、c++、およびその他の言語にも当てはまりました。この声明に真実はありますか?
java - この特定の内部非静的クラスに大きなオーバーヘッドはありますか?
私は学校の課題のために二重リンク リストの独自の実装を作成してNode
おり、リスト クラス内で呼び出される内部ノード クラスを使用しています。これは、相互にリンクされているリスト ノードを表します (リンク リストの場合は通常そうです)。
多くのノードを持つ大きなリストの場合、各Node
オブジェクトが親リスト クラスのインスタンスを参照する可能性があるため、それはかなりのオーバーヘッドと最適ではない設計でしょうか? 非静的クラスとして持つと確かに便利です。ノードは親リストfirst
とlast
参照を変更する可能性があり、カプセル化に最適であることがわかりました。
静的にするNode
と、(リストへの明示的なメンバー参照がなければ) 親リストを操作するために使用できなくなり、first
すべてlast
逆からアプローチする必要があります-リストは独自のメソッドを介してノードを割り当てて操作します、つまり、それらを相互にリンクし、リンクを解除して、その値first
とlast
値を自然に調整します。
優れた設計と学習のために、 The Smart Thing To Do (c) (ある場合)とは何かを知りたいです。
c - なぜ人々は xor スワップを使わないのですか?
一時変数を使用しないため、xor スワップを使用すると高速であるというサイトを読みました。次に例を示します。
実際のコードでこの手法を使用しないのはなぜですか? スタイル悪いだけじゃね?それについて明確に定義されていないものはありますか?私のコンパイラがより明確なコードから自動的に生成する最適化ですか?