google-drive-ocamlfuse vs pyDrive性能比較


ubuntu上のシステムからGoogle Driveをストレージとして使用したいと考え、google-drive-ocamlfuseを使ってみたが、性能が非常に遅いのと、長時間通信をしているとファイルシステムがおかしくなり途中で通信できなくなるので、pyDriveでのデータ転送を試してみる。

google-drive-ocamlfuseの使い方はこちらを参照
使用したpyDriveコードはこちらを参照


性能測定結果

1MBのファイル 10個のアップロード

モジュール5回測定の平均時間
pyDrive28.60
ocamlfuse32.38

1MBのファイルを10個アップロードする処理を5回実施し、それぞれの平均時間をとってみた。
ばらつきがあるものの、pyDriveのほうが基本的に早く、平均すると13%ほど早い。
ただ、どちらの処理も10MBのデータ転送に30秒程度かかるのでけっこうな遅さだ。

10MBのファイル 1個のアップロード

モジュール5回測定の平均時間
pyDrive5.89
ocamlfuse4.81

こちらのテストではocamlfuseのほうが早かった。おそらくファイル1個の転送に対してpyDriveでは1回の認証処理が入っているので祖分部分のオーバーヘッドが大きいと思われる。

100MBのファイル 1個のアップロード

モジュール5回測定の平均時間
pyDrive8.29
ocamlfuse8.90

ファイルのサイズを10倍にしてみた。こちらのテストではpyDriveのほうが若干早かった。
転送時間自体は、それぞれ3秒程度伸びだだけで、処理時間の大部分が転送以外の部分に使われていることがわかる。
よくわからない動きをしたのが、ocamlfuseの場合、最初の2回は10秒程度かかっていたが、後半の3回は7秒台にまで短縮され、キャッシュの処理か何かあるのか突然加速した。

その他気になったこと

ocamlfuseはファイルシステムで、おそらくキャッシュを持っている。ubuntuからファイルをGoogle Driveにファイルを作成し、作成したファイルをブラウザで開いたGoogle Driveで削除といった処理をすると、削除が反映されるまでに時間がかかる。syncコマンドも効かず、キャッシュ更新のトリガーはよくわからなかった。

まとめ

基本的にネットワーク越しのストレージなのでベースとなる性能はよくない。いずれのモジュールを使っても性能的には大きな差は出ない。
ただ、小さなファイルを大量にいくつもアップロードする必要がある場合は、pyDriveで独自の処理を書いたほうが良いと思われる。ocamlfuseの場合はそのような処理をしていると途中でエラーがでたりおかしくなる。業務で利用するならocamlfuseは避けたいと思う。

少ない数のファイルを置いたり、軽めの参照をしたりするぐらいだとocamlfuseが便利だ。
pyDriveの難点は簡単なファイル操作でもそれなりのコードが必要で、その点でocamlfuseは通常のファイルシステムとして見えるので非常に便利である。