2016-09-09

なぜターミナルにBを表示するのは#に比べて遅いのか

java - Why is printing "B" dramatically slower than printing "#"? - Stack Overflow

Stack Overflowに、ターミナルに、'B'を多数出力するコードは、'#'を多数出力するコードに比べて、桁違いに遅いが、なぜかという質問が上がっている。

不思議なことに、ideone.comで試すと速度に違いはないらしい。

その理由は、ターミナルがword-wrap(単語ごとの行折り返し)を行っているので、#を表示する際にはword-wrapは行う必要がないが、Bを出力した場合、後続の文字が単語を区切る文字かどうかを判定するための処理が入り遅くなるというものだった。

よくぞ答えを当てたものだ。

2 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. I think this can be debugged easily with online debugger like onlinegdb.com

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.