回答

收藏

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

技术问答 技术问答 303 人阅读 | 0 人回复 | 2023-09-12

我生成两个1000x矩阵1000:6 H1 O/ S/ f6 w1 T; m* e
第一个矩阵:O和#。9 _6 f, t& U* p3 r) F; K. d
第二个矩阵:O和B。4 X+ Z5 Y* n- T: ]9 d. X
第一个矩阵需要 8.52 秒完成:: y$ @; A2 N- X- P: c% x" {
[code]Random r = new Random();for (int i = 0; i 第二个矩阵需要 259.152 秒即可完成:8 I/ D; k) ^$ Q  p9 H
[code]Random r = new Random();for (int i = 0; i 运行时间明显不同的原因是什么?
0 l: R& U: l: ^9 o正如评论中提出的,打印只是System.out.print("#");需要7.8871几秒钟,而System.out.print("B");给出still printing....7 L/ G. \' k  p& D* M
正如其他人指出的那样,我试过 Ideone.com,而且两个代码都以同样的速度执行。1 p5 \3 S, x1 t9 B- O4 X
测试条件:
2 Q: J* C/ M8 d; L. _, W我从Netbeans 7.2操作此测试并输出到其控制台- M! u3 r6 r) k+ F, s3 v
我用于System.nanoTime()测量
                                                               
; m) F! \  J% }3 E! G4 _: q0 z    解决方案:                                                               
& {; z1 Q; y( Z0 B                                                                纯粹的猜测您使用的终端尝试自动换行,而不是字符换行,并将其视为B单词字符但#视为非单词字符。因此,当它到达一条线的末端并找到一个断线的地方时,它#几乎立刻看到一个,很高兴在那里断线;使用B,它必须继续搜索更长的时间,并且可能有更多的文本来改变(这在某些终端上可能非常昂贵,例如,输出退出,然后输出空间来覆盖被改变的字母)。
1 m. X$ t( Q" X& o2 O7 q1 q但这纯粹是猜测。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则