সম্প্রতি আমি লক্ষ্য করেছি যে 64৪ টি উপাদান সহ একই ধরণের অ্যারে ঘোষণার চেয়ে elements৪ টি উপাদান সমন্বিত একটি অ্যারে ঘোষণা করা অনেক দ্রুত (> 1000 গুণ) is
এটি পরীক্ষা করার জন্য আমি এখানে কোডটি ব্যবহার করেছি:
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 + "";
আমি ভাবছিলাম যে কেন এটি হল এবং যদি সম্ভব হয় তবে এই সমস্যাটি থেকে মুক্তি পাওয়া যায়।
System.nanoTime()বেশি পছন্দ করা উচিতSystem.currentTimeMillis()।