当前位置: 首页 > 面试题库 >

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

劳亦
2023-03-14
问题内容

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

第一矩阵:O#
第二矩阵:OB

使用以下代码,第一个矩阵花费了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()测量

问题答案:

纯粹的猜测
是,您正在使用尝试进行换行而不是字符换行的终端,并且将其B视为单词字符但#视为非单词字符。因此,当它到达一行的末尾并搜索要打破该行的位置时,它#几乎立即看到并高兴地在那儿中断了;而使用时B,它必须继续搜索更长的时间,并且可能要包装更多的文本(在某些终端上可能很昂贵,例如,输出退格键,然后输出空格以覆盖要包装的字母)。

但这纯粹是猜测。



 类似资料:
  • 所以我有这个代码,叫我白痴哈哈,但是我不能让它打印7。 代码: 我需要知道如何改变与函数中的参数同名的变量。 任何帮助都将不胜感激,如果你不明白这个问题,我很乐意解释更多。

  • 问题内容: 如何打印指示的div(而无需手动禁用页面上的所有其他内容)? 我想避免使用新的预览对话框,因此使用此内容创建新窗口没有用。 该页面包含几个表,其中一个表包含我要打印的div-该表已为网络设置了视觉样式,不应以打印形式显示。 问题答案: 这是一个通用的解决方案, 仅 使用 CSS ,我已经验证可以使用。 替代方法不是很好。使用非常棘手,因为如果有任何元素,则任何后代都不会显示。要使用它,

  • 问题内容: 我正在阅读一个python脚本,该脚本接受XML文件的输入并输出XML文件。但是,我不了解打印语法。可有人请解释什么的呢? 问题答案: 该方法格式化字符串字面量 和它的新功能。 甲 格式的字符串文字 或 F-串 是前缀字符串文字或。这些字符串可能包含替换字段,这些替换字段由花括号分隔。尽管其他字符串文字始终具有恒定值,但是格式化的字符串实际上是在运行时评估的表达式。 格式化字符串文字的

  • 问题内容: 我有一个简单的任务:计算每个字母在一个字符串中出现的次数。我已经使用了它,但是在一个论坛上我看到了使用/比每个字母都要慢得多的信息。我认为它只能在字符串中进行一次遍历,而解决方案则必须遍历该字符串四次(在这种情况下)。为什么这么慢? 问题答案: 允许您计算任何可哈希对象,而不仅仅是子字符串。两种解决方案都是-time。您的测量结果表明,迭代和散列单个字符的开销大于运行4倍。 可以 使用

  • 我是新的PDFBox,我有一个要求发送PDF到打印机时,它是打开的。我们使用PDFBox api生成PDF。我使用下面的代码尝试在打开时设置操作,但没有任何效果。请帮帮忙。我使用过不同的javascript,如window.print();this.print();打印();

  • 问题内容: 我想知道当您尝试捕获StackOverflowError并提出以下方法时会发生什么: 现在我的问题是: 为什么此方法打印“ 4”? 我以为是因为在调用堆栈上需要3个段,但是我不知道3的来源。当您查看的源代码(和字节码)时,通常导致的方法调用要多于3(因此,调用堆栈上的3个段是不够的)。如果是由于优化而应用了Hotspot VM(方法内联),我想知道其他VM上的结果是否会有所不同。 编辑