Avatar ·

لماذا يكون إخراج "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) — الفرق يتكرر باستمرار. لماذا يحدث هذا؟ فكلاهما رمز واحد.