x++;
現在、 where x
isInteger
と not anを使用して、いくつかの反復やその他の操作を行っていますint
。
システム上の一部のユーザー操作で操作が繰り返される場合がありますが、数学アプリケーションのように複雑すぎたり数が多すぎたりすることはなく、ユーザー トランザクションごとに最大 10000 回までです。
このボックス化解除とその後のボックス化は、パフォーマンスに顕著なミリ秒の影響を与えますか?
http://download.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html
「結果のリストのパフォーマンスは、すべての取得または設定操作でボックス化またはボックス化解除されるため、おそらく不十分です。たまに使用するのに十分な速さですが、パフォーマンスが重要な内部ループで使用するのは愚かです.
では、いつオートボクシングとアンボクシングを使用する必要がありますか? 数値をコレクションに入れる必要がある場合など、参照型とプリミティブの間に「インピーダンスの不一致」がある場合にのみ使用してください。科学計算やその他のパフォーマンスが重要な数値コードにオートボクシングとアンボクシングを使用することは適切ではありません。Integer は int の代わりにはなりません。オートボクシングとアンボクシングは、プリミティブ型と参照型の区別をあいまいにしますが、それをなくすわけではありません。」
自動ボクシングの速度は、使用している JVM のバージョン、使用している実際の数値の範囲、および GC 設定によって異なります。(un)boxing のパフォーマンスに関するこの非常に興味深い詳細な記事を参照してください。
基本的に、JVM は多数の Integer オブジェクトをキャッシュするため、毎回「共通の」オブジェクトを作成する必要はありません。このキャッシュ サイズを構成できます。
具体的な質問については、プリミティブとオートボクシングを使用すると、操作が数ミリ秒遅くなりますか? これは、リストのサイズと呼び出される頻度に完全に依存します。原始的な代替案のパフォーマンスをテストするのは簡単なはずです (私はそう思います!)。