@@ -36,19 +36,17 @@ for (int i = 0; i < 1000; i++) {
36
36
````
37
37
为什么两者的执行时间会有如此巨大的差距?
38
38
- - -
39
- 评论中一些人建议仅执行`System . out. print(" #" );`以及`System . out. print(" B" );`, 前者用时7. 8871s,而后者仍然在打印(即花费时间过多-- 译者注)
39
+ 评论中一些人建议仅执行`System . out. print(" #" );`以及`System . out. print(" B" );`前者用时7. 8871s,而后者仍然在打印(即花费时间过多-- 译者注)
40
40
另外有些人指出在他们那里工作正常(即两者花费时间差不错-- 译者注),我在[Ideone . com](http: // ideone.com/)环境中运行两段代码,执行时间也差不多。
41
41
42
42
测试条件:
43
43
- Netbeans 7.2 ,结果输出在IDE 的控制台
44
44
- 使用`System . nanoTime()`度量时间
45
45
46
-
47
46
###回答
48
- 纯推测:你正在使用的终端试图进行["自动换行"(word- wrapping)](http: // en.wikipedia.org/wiki/Word_wrap),而不是"字符换行"(character-wrapping),并且将'B'视为一个单词字符(word character),而'#'视为一个非单词字符(non-wordcharacter)。因此当输出到达行尾时,控制台会搜索一个空白符来换行 ,当遇到'#'时可以立即执行换行;然而遇到'B'时,控制台必须继续搜索,因为后面可能有更多的字符需要换行 (这个操作在一些控制台上可能花销很大,例如,输出退格,然后输出空白字符来覆盖那些需要被换行的字符)。
47
+ 纯推测:你正在使用的终端试图进行["自动换行"(word- wrapping)](http: // en.wikipedia.org/wiki/Word_wrap),而不是"字符换行"(character-wrapping),并且将'B'视为一个单词字符(word character),而'#'视为一个非单词字符(non-wordcharacter)。因此当输出到达行尾时,控制台搜索一个位置用来换行 ,当遇到'#'时可以立即执行换行;然而遇到'B'时,控制台必须继续搜索,并且可能有更多的字符需要换行 (这个操作在一些控制台上可能花销很大,例如,输出退格,然后输出空白字符来覆盖那些需要被换行的字符)。
49
48
但是,这仅仅是理论推测。
50
49
51
-
52
50
** 译者注:**
53
51
对于" word-wrapping" 和" character-wrapping" ,我的理解是,它们的区别在于换行时是否在一个单词内部分割,例如在 charac- ter 中的- 处换行," word-wrapping" 会将character全部移到下一行,而" character-wrapping" 则将ter移到下一行,而charac依旧在原来的位置。
54
52
** word- wrapping**
0 commit comments