.純整数vs Int16?
質問
私は疑問符です。
が必要なときに対して繰り返し処理を実行するより小型のリストの項目数に制限が 32000
, 使用してい Int16
私の i 変数の型の代わりに Integer
.いこいの Int16
効率はフルに吹 Integer
.
私が悪いのでしょうか。はありません効果的な性能差を利用 Int16
vsる Integer
?べての利用の停止 Int16
やっと Integer
すべての私数/の繰り返しまいます。
解決
に応じて下記の参考に ランタイム 最適性能 Int32 とを推奨してカウンターなど頻繁にアクセスします。
からの本: MCTS自身のペースで研修キット(受験70-536):Microsoft®です。NET Framework2.0—アプリ開発財団
第1章:"枠組みのファンダメンタルズ"
レッスン1:"使用価値タイプ"
最良の実践:最適性能 内蔵型
の実行時の最適な性能の32ビット整数型(Int32とUInt32)での使用人のためのカウンター等のアクセスの積分変数です。
浮動小数点事業、ダブルは最も効率的なタイプが事業の最適化によるハードウェア
また、表1-1の同じセクションリストおすすめに使用します。関連す:
- Int16-相互運用やその他の専門用
- Int32を作ってみてはいかがでし番号、カウンター
- Int64大数
他のヒント
すべ ほとんど 使用 Int32
または Int64
(タを得ることはありませんの信用を UInt32
または UInt64
がループ以上の配列やコレクションのインデックスコンサルティング.
目の前にある、ことりと触れ合理由で効率的になるすべての配列および回収指数のBCLか Int32
s、暗黙的なジュエル)"のサマーコレクショ 常に も起こりうるコードを使用しようとしてい Int16
sとしての指数です。
の明白な理由の配列を取 Int32
としてのインデックスにはCILの仕様はすべての操作スタック値 のいずれか Int32
または Int64
.毎回、いずれの負荷や店舗の価値、その他の整数型Byte
, SByte
, UInt16
, Int16
, UInt32
, や UInt64
いは暗黙的に変換の操作ます。符号なしの種類ない罰金を積み、保存の価値、これは前方一致、オーバーフローチェック。の種類に署名し 毎 負荷インextends、店舗サインが崩れ(とが可能なオーバーフローチェック).
そこにはあなたを傷つけたくなるのは、ループ自体の配列です。例えば、この顔をしたループ:
for (short i = 0; i < 32000; i++) {
...
}
見栄えが良いですか。詳細す基本的に無視し、初期化(short i = 0
ていますが、比較i<32000
やincrementing(i++
部品が32000ます。こちらは一部のpesudo-コードのどこのもののようで、機械のレベル:
Int16 i = 0;
LOOP:
Int32 temp0 = Convert_I16_To_I32(i); // !!!
if (temp0 >= 32000) goto END;
...
Int32 temp1 = Convert_I16_To_I32(i); // !!!
Int32 temp2 = temp1 + 1;
i = Convert_I32_To_I16(temp2); // !!!
goto LOOP;
END:
があり 3 変換が行 32000 ます。って完全に回避での使用 Int32
または Int64
.
更新:述べましたように、コメントによって、実際には記述すること .純積分データの種類ご
Int16ることで、実際に 以 効率的で、x86指示のための単語のアクセスupスペースの指dwordます。このようにJITます。など、ほとんどない 以上 効率的として使用する場合は、変数になります。
反対側はtrueです。
32(or64ビット整数がよりスピーディになりint16.一般にネイティブデータ型では最速。
Int16もにしたい場合は、お客様のデータ構造と無駄のなどが可能です。この省スペースがあり性能の向上を図ります。
パフォーマンス差するので小さな現代ハードウェアのすべての意図や目的でない。試し書きのカップル試験のハーネス、走らせることも数百倍、平均ループの完了時代といっていうのかな。
この意味から保存の観点の場合について、非常に限られた資源-組み込みシステムが小さなスタック、ワイヤプロトコル設計のための遅いネットワーク(GPRSなど)です。
んでいます。
何がはい効率をよりわかりやすくコンパイラをコンパイラやプラットフォームプラットフォーム.されない限りは、試験する方法はありませんになっているかどうかを通知int16またはintにより効率的です。
いなければ大丈夫だと整数ではなく、実績のある問題をint16修正。
利用Int32 32ビット機(Int64 64ビット機のための最速。の使用によ整数タイプだ 本当に 関空間にすることが出来ます。(が遅くなることがありますが。
その他はこちらの内容に間違いがないか確認し、利用 以上 Int32(32ビットコード)/Int64(64ビットコード)が必要であれば極端に必要な記憶容量に関する条件、または他の執行にビジネスオブジェクトの分野ではいまだに不動産レベルの検証この場合、このコースを受講した。
一般的な効率化があるので、性能の問題です。その場合、プロファイルです。ばん&チェックの両方がプロファイリングはならないですが、チェックのILます。
良い質問ですが。だかについてコンパイラですよね。したい場合は学習プログラムでは、より効率的な学習の基礎をILどのようにC#/VBコンパイラでコンパイルする絶好のアイデアです。
想像できないが重要な性能を損Int16前int.
保存もビット数は、変数の型宣言です。
およびレコード店ディスクユニオンの手間が仕様変更もで検 ができ 以上32767まで見ることがでお申込開始例外を投げ...
ありませんで顕著なパフォーマンスのゲインを使うためのデータタイプより小さいInt32で、しかも読みどこかをInt32でより早く、よりInt16でのメモリ割り当て