問題タブ [strength-reduction]

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.

0 投票する
5 に答える
7249 参照

optimization - add と mul (IA32 アセンブリ)

addはmul関数と比較して高速であることを知っています。

より効率的にするために、次のコードでmulの代わりにaddを使用する方法を知りたいです。

サンプルコード:

0 投票する
2 に答える
1026 参照

c - どうすれば除算を 2^n + 1 減らすことができますか?

コードのホット パスでいくつかの整数除算を実行する必要があります。プロファイリングとサイクル カウントによって、整数除算のコストがかかっていることを既に確認しています。部門をより安価なものに減らすためにできることがあるといいのですが。

このパスでは、2^n+1 (n は変数) で割ります。基本的に、この関数を最適化して除算演算子を削除したいと考えています。

2^n で除算する場合は、div を右シフト n に置き換えるだけです。定数で除算する場合、コンパイラの強度によってその特定の除算が削減され、おそらく乗算とシフトになります。

2^n+1 に適用される同様の最適化はありますか?

編集: a here は、任意の 64 ビット整数にすることができます。n は 10 から 25 までの数個の値しか取りません。確かに、各 n についていくつかの値を事前計算できますが、a についてはできません。

0 投票する
2 に答える
70 参照

algorithm - このループを方程式に減らします

この関数 (便宜上 C で記述されていますが、これは質問にとって重要ではありません) は、配列のサイズを決定します。if-else チェーンや方程式に変換できると確信していますが、その方法を理解できるほど賢くはありません。(明らかな if-else チェーンを書き留めようとしましたが、場合によっては行き詰まりました。)

この種のループを算術演算に変換するための一般的でばかげた手法があれば、それは理想的な答えです。それができない場合、このインスタンスの解決策は問題ありません。