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




1 Answers

আমি জ্যাকেট সংস্করণ 1.8 সঙ্গে উভয় Netbeans 8.0.2 বনাম Eclipse উপর পরীক্ষা সঞ্চালিত; আমি পরিমাপ জন্য System.nanoTime() ব্যবহার।

Eclipse:

আমি উভয় ক্ষেত্রে একই সময় পেয়েছিলাম - প্রায় 1.564 সেকেন্ড

NetBeans:

  • "#" ব্যবহার: 1.536 সেকেন্ড
  • "বি" ব্যবহার করে: 44.164 সেকেন্ড

সুতরাং, এটি দেখে মনে হচ্ছে নেটবিন্সগুলিতে মুদ্রণের কনসোলের খারাপ কার্যক্ষমতা রয়েছে।

আরও গবেষণার পরে আমি বুঝলাম যে সমস্যা Netbeans এর সর্বাধিক বাফারের line-wrapping (এটি System.out.println কমান্ডের জন্য সীমাবদ্ধ নয়), এই কোড দ্বারা প্রদর্শিত:

for (int i = 0; i < 1000; i++) {
    long t1 = System.nanoTime();
    System.out.print("BBB......BBB"); \\<-contain 1000 "B"
    long t2 = System.nanoTime();
    System.out.println(t2-t1);
    System.out.println("");
}

সময় ফলাফল কম হয় তখন প্রতি পঞ্চম পুনরাবৃত্তি ব্যতীত প্রতিটি পুনরাবৃত্তি 1 মিলিসেকেন্ড, সময় ফলাফল প্রায় 225 মিলিসেকেন্ড হয়। কিছু (ন্যানোসেকেন্ডে) মত:

BBB...31744
BBB...31744
BBB...31744
BBB...31744
BBB...226365807
BBB...31744
BBB...31744
BBB...31744
BBB...31744
BBB...226365807
.
.
.

এবং তাই ..

সারাংশ:

  1. Eclipse পুরোপুরি কাজ করে "বি"
  2. Netbeans একটি লাইন-মোড়ানো সমস্যা আছে যা সমাধান করা যেতে পারে (কারণ সমস্যাটি গ্রহনযোগ্য হয় না) (বি ("B") পরে স্থান যুক্ত না করে)।
java performance loops for-loop system.out

আমি 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