はじめに
前回、neocomplcache-clang_complete を利用してコード補完時間を booooooost!!! しないようにする - 凹みTipsという記事を書いたのですが、ほんとに Booooooost!! しなくなったかどうか調べてみました。
結果
clang_complete
LibClang - First reparse (generate PCH cache): 3.7585978508
LibClang - Code completion time: 1.478649905
neocomplcache-clang
LibClang - First parse: 1.60526895523
LibClang - First reparse (generate PCH cache): 3.14388608932
LibClang - Code completion time: 1.315502882
誤差ですね。
clang_complete の方は非同期で generate PCH cache をしてくれて、その分だけ速く感じる気がします。
neocomplcache-clang はスコープ解決演算子"::"を打って初めて PCH を生成するから初回の補完が遅いとか…?って認識してます
(違ってたらご指摘ください)
補完時間はもうちょいマシンスペック上げれば問題なさそうですので、Ivy Bridge が出たら新しい PC 組んで ssh する方向で行こうかな、と考えてます。
2011/01/02 追記:
Shougo さんにご説明いただきました。
@hecomi うーん、これなんですけど。補完時間の問題ではなく、おそらくcomplete_check()が使えるか使えないかどうかです。
2012-01-02 16:40:59 via web to @hecomi
@hecomi 体感時間と実際の時間の違いはわかりますか? つまり、キー入力したときに補完を止めるclang_completeのほうが早いと錯覚しやすいということです。
2012-01-02 16:42:42 via web to @hecomi
@hecomi 「clang_complete の方は非同期で generate PCH cache をしてくれて、その分だけ速く感じる気がします。」これは間違いです。ソースコードを見ましたが、そんなコードはありませんでした。
2012-01-02 16:43:59 via web to @hecomi
@hecomi 「neocomplcache-clang はスコープ解決演算子"::"を打って初めて PCH を生成するから初回の補完が遅いとか?って認識してます。」どちらの環境であっても、プリコンパイルヘッダは自前で作らない限り認識しません。
2012-01-02 16:44:34 via web to @hecomi
@hecomi 体感時間と実際の時間の違いはわかりますか? つまり、キー入力したときに補完を止めるclang_completeのほうが早いと錯覚しやすいということです。
2012-01-02 16:42:42 via web to @hecomi
@ShougoMatsu 「generate PCH cache」というメッセージは、「勝手にプリコンパイル済ヘッダを作っておきましたよ」ということを明示しているメッセージではないということでしょうか?
2012-01-02 17:10:08 via TweetDeck to @ShougoMatsu
@hecomi ソースコード本体には書いていないですね。ということは、libclang本体でやっている機能でしょう。neocomplcache-clangでもclang_completeでも使っている機能は同じなので速度は変わりません。
2012-01-02 21:11:04 via web to @hecomi
@ShougoMatsu 「neocomplcache-clang は補完は常に ON なので補完作業が終わるまでキー入力が反映されないが、clang_complete はキー入力すると補完 OFF となり、補完はされなくなるが止まった感じはしない」ということでしょうか?
2012-01-02 17:04:44 via TweetDeck to @ShougoMatsu
@hecomi 補完作業、というよりは厳密には補完候補の計算ですね。clang_completeはキー入力があると計算をやめます。特に、早くキー入力をしているときは、こちらのほうが早く感じるでしょう。ただし、候補をスキップしているだけです。
2012-01-02 21:12:24 via web to @hecomi