yes!yes!yes! 〜yesベンチマーク〜
yesベンチマーク
UNIX系OS(?)にはyesコマンドがある。
これをベンチマークに使えないかとふと思い立ったので試してみた。
yesコマンドには回数指定するものが無いので、head -nで回数を指定した。今回は1000000回で行った。
$ time yes | head -n 1000000
Result
- xfce4-terminal
- 5.942(s)
- xterm
- 5.789(s)
- console
- 29.063(s)
- fbterm
- 19.822(s)
- ssh
- 3.755(s)
- ssh(X11)
- 4.493(s)
-X無し時のssh(マシン性能低い)が早いことから、X11が速度に影響与えるのは確かなようである。consoleは何か遅い理由がある。
ちなみにCPU使用率のバー見ていると、xtermが明らかにデュアルコア動作しており、consoleはシングルコアを使い果たし、xfce4-terminalは比較的余裕があった。
topで見てみると、ssh版はsshdがCPUの40%を食い潰しており、xfce4-terminalはheadが最大で20%とxfce4-terminal自身が15%。consoleはyesが100%動いていた。
sshが早い理由は、描画をクライアントに投げられたからデハ、という意見アリ。
結果を説明できる人求む!
マシン構成とか
OSはクライアント、サーバどちらもUbuntu12.04
クライアントはconsole起動時もXFCE4が立ち上がっている。
CPU以下はこちら。サーバはEarth、クライアントはJupiter。
他の言語とか
for i in range(1000000): print("y")
- Python
- 7.568(s)
$ scala -e '(1 to 1000000).foreach{ i => println("y") }'
- Scala
- 8.076(s)
この差はVM起動時間とコンパイル時間の差か。言語の選択理由は調べずにすぐに書けそうだったから←
#include<stdio.h> int main(void) { for(int i=0; i<1000000; ++i){ printf("y\n"); } return 0; }
- C
- 7.045(s)
基本的にはprintに固有の時間掛かって、あとは言語内でのループ分が余計に、という感じか。xfce4-terminal上で動かしてるので、大体それを引いた分がオーバヘッドかな?