java - কেন মুদ্রণ "বি" মুদ্রণ নাটকীয়ভাবে মুদ্রণ চেয়ে "#"?




1 Answers

বিশুদ্ধ ধারণা হল যে আপনি এমন একটি টার্মিনাল ব্যবহার করছেন যা চরিত্র-মোড়কে বদলে word-wrapping করার প্রচেষ্টা করে এবং একটি শব্দ চরিত্র হিসাবে কিন্তু # একটি অ-শব্দ চরিত্র হিসাবে আচরণ করে। তাই যখন এটি একটি লাইনের শেষে পৌঁছায় এবং লাইন ভাঙ্গার জন্য একটি জায়গা অনুসন্ধান করে, তখন এটি প্রায় # অবিলম্বে এবং আনন্দের সাথে সেখানে ভাঙ্গে; যখন B দিয়ে এটি দীর্ঘতর অনুসন্ধান রাখতে থাকে এবং তার কাছে মোড়ানো আরও পাঠ্য থাকতে পারে (যা কিছু টার্মিনালগুলিতে ব্যয়বহুল হতে পারে, উদাহরণস্বরূপ, ব্যাকস্পেসগুলিকে আউটপুট করা, তারপরে স্পেসগুলি আউটপুট করা যাতে আবৃত হওয়া অক্ষরগুলি ওভাররাইট করতে পারে)।

কিন্তু যে বিশুদ্ধ ফটকা।

আমি 1000 x 1000 এর দুটি ম্যাট্রিক্স তৈরি করেছি:

প্রথম ম্যাট্রিক্স: O#
দ্বিতীয় ম্যাট্রিক্স: ও B

নিম্নলিখিত কোডটি ব্যবহার করে, প্রথম ম্যাট্রিক্সটি সম্পন্ন করতে 8.5২ সেকেন্ড সময় নেয়:

Random r = new Random();
for (int i = 0; i < 1000; i++) {
    for (int j = 0; j < 1000; j++) {
        if(r.nextInt(4) == 0) {
            System.out.print("O");
        } else {
            System.out.print("#");
        }
    }

   System.out.println("");
 }

এই কোড দিয়ে, দ্বিতীয় ম্যাট্রিক্সটি সম্পন্ন করতে ২5.11২52 সেকেন্ড সময় নেয়:

Random r = new Random();
for (int i = 0; i < 1000; i++) {
    for (int j = 0; j < 1000; j++) {
        if(r.nextInt(4) == 0) {
            System.out.print("O");
        } else {
            System.out.print("B"); //only line changed
        }
    }

    System.out.println("");
}

নাটকীয়ভাবে বিভিন্ন রান বার পিছনে কারণ কি?

মন্তব্য হিসাবে প্রস্তাবিত, শুধুমাত্র System.out.print("#"); মুদ্রণ System.out.print("#"); 7.8871 সেকেন্ড সময় নেয়, যখন System.out.print("B"); still printing... দেয় still printing...

অন্যরা যারা ইঙ্গিত করে যে এটি তাদের জন্য সাধারণত কাজ করে, আমি উদাহরণস্বরূপ Ideone.com চেষ্টা করেছি , এবং কোডের উভয় টুকরা একই গতিতে চালানো হয়।

পরীক্ষা শর্ত:

  • আমি Netbans 7.2 থেকে এই পরীক্ষা চালানো, তার কনসোল আউটপুট সঙ্গে
  • আমি পরিমাপ জন্য System.nanoTime() ব্যবহার



Related

java performance loops for-loop system.out