আমি মনে করি না যে এটির মতো পারফরম্যান্সটি অপ্টিমাইজ করার চেষ্টা করার চেষ্টা করেছে। আজ (2019) দুটি আইটেমই আমার আই 5 ল্যাপটপে 100.000.000 লুপের জন্য প্রায় 11 সেকেন্ডে চলছে:
String a;
StringBuilder sb = new StringBuilder();
long time = 0;
System.gc();
time = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
StringBuilder sb3 = new StringBuilder();
sb3.append("someString");
sb3.append("someString2");
sb3.append("someStrin4g");
sb3.append("someStr5ing");
sb3.append("someSt7ring");
a = sb3.toString();
}
System.out.println(System.currentTimeMillis() - time);
System.gc();
time = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
sb.setLength(0);
sb.delete(0, sb.length());
sb.append("someString");
sb.append("someString2");
sb.append("someStrin4g");
sb.append("someStr5ing");
sb.append("someSt7ring");
a = sb.toString();
}
System.out.println(System.currentTimeMillis() - time);
==> 11000 এমসিতে (লুপের অভ্যন্তরে ঘোষণা) এবং 8236 এমসিতে (লুপের বাইরে ঘোষণা)
এমনকি যদি আমি কয়েক বিলিয়ন লুপের সাথে ঠিকানা অধিগ্রহণের জন্য প্রোগ্রামগুলি চালিত করি তবে 2 সেকেন্ডের পার্থক্য রয়েছে। ১০০ মিলিয়ন লুপের জন্য কোনও পার্থক্য হয় না কারণ প্রোগ্রামগুলি কয়েক ঘন্টা চলছে running আপনার যদি কেবলমাত্র একটি অ্যাপেন্ড স্টেটমেন্ট থাকে তবে জিনিসগুলি পৃথক রয়েছে তাও সচেতন থাকুন:
System.gc();
time = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
StringBuilder sb3 = new StringBuilder();
sb3.append("someString");
a = sb3.toString();
}
System.out.println(System.currentTimeMillis() - time);
System.gc();
time = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
sb.setLength(0);
sb.delete(0, sb.length());
sb.append("someString");
a = sb.toString();
}
System.out.println(System.currentTimeMillis() - time);
==> 3416 ম্যাসি (লুপের অভ্যন্তরে), 3555 ম্যাসি (লুপের বাইরে) লুপের মধ্যে স্ট্রিংবিল্ডার তৈরি করা প্রথম বিবৃতি সেই ক্ষেত্রে দ্রুততর। এবং, যদি আপনি মৃত্যুদন্ডের ক্রম পরিবর্তন করেন তবে এটি আরও দ্রুত is
System.gc();
time = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
sb.setLength(0);
sb.delete(0, sb.length());
sb.append("someString");
a = sb.toString();
}
System.out.println(System.currentTimeMillis() - time);
System.gc();
time = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
StringBuilder sb3 = new StringBuilder();
sb3.append("someString");
a = sb3.toString();
}
System.out.println(System.currentTimeMillis() - time);
==> 3638 মেসি (লুপের বাইরে), 2908 মেসি (লুপের অভ্যন্তরে)
শুভেচ্ছা, উলরিচ