为什么打印“ B”比打印“#”要慢得多?| Java Debug 笔记

193 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接

提问:为什么打印“ B”比打印“#”要慢得多?

我生成了1000x的两个矩阵1000:

第一矩阵:O和#。 第二矩阵:O和B。

使用以下代码,第一个矩阵花费了8.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("#");
        }
    }

   System.out.println("");
 }

使用此代码,第二个矩阵花费了259.152秒来完成:

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("#");需要7.8871秒,而System.out.print("B");给still printing...。

正如其他指出它对他们正常工作的人一样,例如,我尝试了Ideone.com,并且这两段代码以相同的速度执行。

测试条件:

我从Netbeans 7.2运行了此测试,并将输出输出到其控制台中 我用来System.nanoTime()测量

高分回答:

很多的知识点,真的需要写出来才会掌握!!! \color{purple}很多的知识点,真的需要写出来才会掌握!!!{~}

是的,罪魁祸首肯定是包装文字。当我测试您的两个程序时,NetBeans IDE 8.2给了我以下结果。

第一矩阵:O和#= 6.03秒
第二矩阵:O和B = 50.97

仔细查看您的代码,您已经在第一个循环结束时使用了换行符。但是您没有在第二个循环中使用任何换行符。因此,您将在第二个循环中打印一个包含1000个字符的单词。这会导致换行问题。如果我们在B后面使用非单词字符“”,则仅需5.35秒即可编译程序。如果我们在传递100个值或50个值后在第二个循环中使用换行符,则分别只需要8.56秒和7.05秒。

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");
        }
        if(j%100==0){               //Adding a line break in second loop      
            System.out.println();
        }                    
    }
    System.out.println("");                
}

另一个建议是更改NetBeans IDE的设置。首先,转到NetBeans工具,然后单击选项。之后,单击“编辑器”,然后转到“格式”选项卡。然后选择任何地方的自动换行选项。编译该程序所需的时间几乎减少了6.24%。

文章翻译自 am2dgbqfb6mk75jcyanzabc67y-ac4c6men2g7xr2a-stackoverflow-com.translate.goog/questions/2…

作者建议:大家来找茬!!!

真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话

求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!

如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️