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。

http://ponkotuy.com/pc

他の言語とか

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上で動かしてるので、大体それを引いた分がオーバヘッドかな?