Windows上では今までCygwinを使っていたのですが、Cygwinはプロセスのforkの性能が遅く、全体的に遅かった。そこで、2016/8 にリリースされたWindows 10のbash (win-bashと略す)のfork性能がCygwinと較べてどのくらい早いのか比較してみた。
使用CPU : Core i5 6200U
まずはCygwin。1秒間にdateコマンドを20回ぐらい起動できた。(最初の1秒間は7回とかなり遅い)
$ while (true); do date; done | uniq -c 7 2016年 8月 11日 木曜日 00:35:32 JST 18 2016年 8月 11日 木曜日 00:35:33 JST 24 2016年 8月 11日 木曜日 00:35:34 JST 19 2016年 8月 11日 木曜日 00:35:35 JST 20 2016年 8月 11日 木曜日 00:35:36 JST 20 2016年 8月 11日 木曜日 00:35:37 JST 20 2016年 8月 11日 木曜日 00:35:38 JST 21 2016年 8月 11日 木曜日 00:35:39 JST 18 2016年 8月 11日 木曜日 00:35:40 JST 23 2016年 8月 11日 木曜日 00:35:41 JST
次はwin-bash。dateコマンドは30回程度とCygwinより若干性能はよい。
$ while (true); do date; done | uniq -c 30 2016年 8月 11日 木曜日 00:36:06 DST 34 2016年 8月 11日 木曜日 00:36:07 DST 33 2016年 8月 11日 木曜日 00:36:08 DST 33 2016年 8月 11日 木曜日 00:36:09 DST 33 2016年 8月 11日 木曜日 00:36:10 DST 32 2016年 8月 11日 木曜日 00:36:11 DST 32 2016年 8月 11日 木曜日 00:36:12 DST 33 2016年 8月 11日 木曜日 00:36:13 DST 32 2016年 8月 11日 木曜日 00:36:14 DST 33 2016年 8月 11日 木曜日 00:36:15 DST
同PC上のVirtualBox上のUbuntu 14.04 上でも計測してみた。
$ while (true); do date; done | uniq -c 281 2016年 8月 11日 木曜日 14:20:38 JST 518 2016年 8月 11日 木曜日 14:20:39 JST 438 2016年 8月 11日 木曜日 14:20:40 JST 415 2016年 8月 11日 木曜日 14:20:41 JST 340 2016年 8月 11日 木曜日 14:20:42 JST 340 2016年 8月 11日 木曜日 14:20:43 JST 319 2016年 8月 11日 木曜日 14:20:44 JST 275 2016年 8月 11日 木曜日 14:20:45 JST 258 2016年 8月 11日 木曜日 14:20:46 JST 255 2016年 8月 11日 木曜日 14:20:47 JST
桁が違う・・・
やっぱりネイティブなLinuxと比べると、win-bashはかなり遅そうだ。
2017/4/16追記
Windows 10 Creators update にアップデートして計測してみたが、差異なし
$ while (true); do date; done | uniq -c 9 2017年 4月 16日 日曜日 22:37:40 DST 32 2017年 4月 16日 日曜日 22:37:41 DST 30 2017年 4月 16日 日曜日 22:37:42 DST 31 2017年 4月 16日 日曜日 22:37:43 DST 31 2017年 4月 16日 日曜日 22:37:44 DST 30 2017年 4月 16日 日曜日 22:37:45 DST 30 2017年 4月 16日 日曜日 22:37:46 DST