IntelliSenseのデータベースをRAMディスクに移動してみた

ええVisualStudio愛用してますとも。
さて、コード補完等をしてくれるIntelliSenseですが、C++の場合はソースを解析したものをキャッシュすることで高速化を図っています。具体的に言うと.ncb(2008以前)とか.sdfとかipch(2010)とかそんな名前のファイル・フォルダです。
コード補完無しではろくにコード書けないので*1やむを得ないものの、100MB近いファイルがソリューションごとに生成されて、そのうえコードを変更する度に更新されるというのはちょっと気になるところです。ファイルをコピーするときに邪魔だしね。
で、どうせ頻繁に更新されるなら*2もうオンメモリでいいじゃないですか。
先日Dataram RAMDiskというソフトを導入して2GBほどRAMディスクとして使っています。ここに移動することにしました。

フォールバックってなんだ

VisualStudioにはIntelliSenseのデータベースが置けない場所が存在します。具体的にはネットワークドライブなど。ネットワークドライブ上のプロジェクトはそのまま開いて編集・ビルドできますが、件のデータベースは置かせてくれません。
でもデータベース無しではろくに動かない。そうだ、代替のストアに保存しよう。
それがフォールバック位置であり、ソリューションディレクトリの代わりにフォールバック位置を利用することをフォールバックと言うそうです。
じゃあ常にフォールバック位置を使うようにすればソリューションディレクトリを使わずに済むよね、というのが今回の話。

いざ設定

ツール→オプションを開き、テキストエディター→C/C++→詳細とたどるとこんな画面になります。

詳細というかほとんどIntelliSenseの設定ですね。ところどころ鬱陶しいと思っている人はいじってみると幸せになれるかも知れません。
今回のターゲット、フォールバック位置というグループもありますね。

常にフォールバック位置を使用

通常データベースのストアとしてはソリューションディレクトリが優先されますが、ここをTrueにするとフォールバック位置を優先的に使用します。

フォールバック位置の使用を警告しない

先の設定で優先させた場合も含め、フォールバック位置が使用されると警告が表示されます。ここをTrueにすることでその表示を抑制します。

フォールバック位置

予備のストアとして使う場所を指定します。デフォルトは空で、この場合一時ディレクトリが使われます。実際には{フォールバック位置}\{ソリューション名}-{ハッシュ}\に諸々のファイルが保存されることになります。
まあ日本語で説明が表示されてますけどね。
フォールバック位置に任意のディレクトリを指定して、常にフォールバック位置を使用をTrueにするだけで、ほらできた!お好みで警告しない設定もどうぞ。

確かに軽くなったけど

DxLib.hとか大きなヘッダを開くと動きが止まるのはなぜ・・・
と、VSCommands無効化したら軽くなった。お ま え か

*1:少なくとも私は

*2:プリコンパイル済みヘッダは毛嫌いしているので知りません