もともとmacでのdockerはdinghyをずっと使っている. docker-syncはなんか違うなーと思っているし,dockerを使いはじめる段階ではそもそもDocker for macがまだ公開されていなかった.
で,Docker for macが公開されたのはいいんだけど,ずっとファイル共有が遅いという問題が解決していなかったように思う.
最近は,cachedとかdelegatedというのがでてきて
速くなってきたらしいというので,いよいよDocker for macに乗り換えられるかなーと思った.
測ってみる
本来ならreadとwrite両方図るべきだろうが,とりあえず実用的にどのくらい変わるのかが見たい. だから,ちょっと重めのRailsアプリを起動してみようと思う.
今回は rake stats
してみる.おそらくほぼすべて読み込みしか走らないだろうから,delegatedの検証にはならなくて,ほぼcachedしか効かないだろう.
でもそもそも,読み込みが遅かったらRailsの起動が遅くて嫌になると思うんだ.
dinghy
まずはいつも使っているdinghy.
rails@926dcbe21411:/usr/src/app$ time bundle exec rake stats +----------------------+--------+--------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+--------+--------+---------+---------+-----+-------+ | Controllers | 400 | 315 | 10 | 32 | 3 | 7 | | Helpers | 66 | 61 | 0 | 6 | 0 | 8 | | Jobs | 0 | 0 | 0 | 0 | 0 | 0 | | Models | 633 | 224 | 25 | 12 | 0 | 16 | | Mailers | 0 | 0 | 0 | 0 | 0 | 0 | | JavaScripts | 290 | 210 | 0 | 34 | 0 | 4 | | Libraries | 49084 | 33998 | 4 | 4395 | 1098 | 5 | | Model specs | 607 | 518 | 0 | 0 | 0 | 0 | | Request specs | 261 | 232 | 0 | 0 | 0 | 0 | | Lib specs | 606 | 535 | 0 | 0 | 0 | 0 | | Routing specs | 252 | 190 | 0 | 0 | 0 | 0 | | Job specs | 15 | 1 | 0 | 0 | 0 | 0 | +----------------------+--------+--------+---------+---------+-----+-------+ | Total | 52214 | 36284 | 39 | 4479 | 114 | 6 | +----------------------+--------+--------+---------+---------+-----+-------+ Code LOC: 34808 Test LOC: 1476 Code to Test Ratio: 1:0.0 real 0m30.025s user 0m2.990s sys 0m6.370s
docker for mac(オプションなしでの起動)
次はdocker for mac.ただしこの段階ではcachedもdelegatedも付けない.
rails@1b51833409d0:/usr/src/app$ time bundle exec rake stats +----------------------+--------+--------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+--------+--------+---------+---------+-----+-------+ | Controllers | 400 | 315 | 10 | 32 | 3 | 7 | | Helpers | 66 | 61 | 0 | 6 | 0 | 8 | | Jobs | 0 | 0 | 0 | 0 | 0 | 0 | | Models | 633 | 224 | 25 | 12 | 0 | 16 | | Mailers | 0 | 0 | 0 | 0 | 0 | 0 | | JavaScripts | 290 | 210 | 0 | 34 | 0 | 4 | | Libraries | 49084 | 33998 | 4 | 4395 | 1098 | 5 | | Model specs | 607 | 518 | 0 | 0 | 0 | 0 | | Request specs | 261 | 232 | 0 | 0 | 0 | 0 | | Lib specs | 606 | 535 | 0 | 0 | 0 | 0 | | Routing specs | 252 | 190 | 0 | 0 | 0 | 0 | | Job specs | 15 | 1 | 0 | 0 | 0 | 0 | +----------------------+--------+--------+---------+---------+-----+-------+ | Total | 52214 | 36284 | 39 | 4479 | 114 | 6 | +----------------------+--------+--------+---------+---------+-----+-------+ Code LOC: 34808 Test LOC: 1476 Code to Test Ratio: 1:0.0 real 7m1.390s user 0m8.040s sys 0m28.270s
なんという遅さ…….
docker for mac(cached)
次はcachedをつけてみる.
rails@e6ca04c4f889:/usr/src/app$ time bundle exec rake stats +----------------------+--------+--------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+--------+--------+---------+---------+-----+-------+ | Controllers | 400 | 315 | 10 | 32 | 3 | 7 | | Helpers | 66 | 61 | 0 | 6 | 0 | 8 | | Jobs | 0 | 0 | 0 | 0 | 0 | 0 | | Models | 633 | 224 | 25 | 12 | 0 | 16 | | Mailers | 0 | 0 | 0 | 0 | 0 | 0 | | JavaScripts | 290 | 210 | 0 | 34 | 0 | 4 | | Libraries | 49084 | 33998 | 4 | 4395 | 1098 | 5 | | Model specs | 607 | 518 | 0 | 0 | 0 | 0 | | Request specs | 261 | 232 | 0 | 0 | 0 | 0 | | Lib specs | 606 | 535 | 0 | 0 | 0 | 0 | | Routing specs | 252 | 190 | 0 | 0 | 0 | 0 | | Job specs | 15 | 1 | 0 | 0 | 0 | 0 | +----------------------+--------+--------+---------+---------+-----+-------+ | Total | 52214 | 36284 | 39 | 4479 | 114 | 6 | +----------------------+--------+--------+---------+---------+-----+-------+ Code LOC: 34808 Test LOC: 1476 Code to Test Ratio: 1:0.0 real 1m57.487s user 0m6.990s sys 0m10.460s
まとめ
素のdocker for macよりはだいぶ速くなった.
だけどやっぱりまだdinghyよりかなり遅いな.
まだdinghyから抜け出せそうにない.
あと,やるなら各自用途によって自分のやりたいことを計測したほうがいいと思う.