最近、64 要素を含む配列を宣言する方が、65 要素を含む同じタイプの配列を宣言するよりもはるかに高速 (>1000 倍) であることに気付きました。
これをテストするために使用したコードは次のとおりです。
public class Tests{
public static void main(String args[]){
double start = System.nanoTime();
int job = 100000000;//100 million
for(int i = 0; i < job; i++){
double[] test = new double[64];
}
double end = System.nanoTime();
System.out.println("Total runtime = " + (end-start)/1000000 + " ms");
}
}
これは約 6 ミリ秒で実行されます。置き換えるnew double[64]
とnew double[65]
、約 7 秒かかります。ジョブがますます多くのスレッドに分散されると、この問題は指数関数的に深刻になります。これが私の問題の原因です。
int[65]
この問題は、やなどのさまざまなタイプの配列でも発生しますString[65]
。この問題は大きな文字列:String test = "many characters";
では発生しませんが、これを次のように変更すると発生し始めます。String test = i + "";
なぜそうなるのか、この問題を回避できるのかどうか疑問に思っていました。