لماذا يكون إخراج "B" في Java أبطأ بكثير من إخراج "#"؟
مرحبًا بالجميع! أنا مبتدئ في Java وأكتب script بسيطًا لبناء رسم بياني لتوزيع الأرقام العشوائية. في الحلقة، أخرج الرموز إلى console عبر System.out.print(). لاحظت شيئًا غريبًا: عندما أخرج الرمز "#" (شباك)، يعمل البرنامج بسرعة كبيرة. ولكن إذا غيرت الرمز إلى "B" (حرف لاتيني كبير)، يصبح التنفيذ أبطأ بشكل ملحوظ — الفرق يصل إلى 2-3 مرات!
إليك الكود المبسط الذي يوضح المشكلة:
```java
public class TestPrint {
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
System.out.print("#"); // أو "B"
}
long end = System.currentTimeMillis();
System.out.println("\nالوقت: " + (end - start) + " ms");
}
}
```
مع "#" أحصل على حوالي 200-300 مللي ثانية، بينما مع "B" أحصل على حوالي 600-800 مللي ثانية. اختبرت على إصدارات مختلفة من Java (8, 11, 17) — الفرق يتكرر باستمرار. لماذا يحدث هذا؟ فكلاهما رمز واحد.