#VariousComplements
## 概要
`Current vault complement`をコマンド実行しなくても自動で行うようにする。
## 課題
パフォーマンス。特に以下3点。
- **差分更新できる仕組み**
- ファイルpathをキーにしてトークンを配列で持たせる
- 更新するファイルのkeyに対するvalueを削除して、reindexingした結果をぶちこむ
- トークンはユニークにしてもしなくてもいい
- 結局、Vault全体でUniqにする必要があるから
- Providerのデータ持ち方は変えたくない
- 1文字目をkeyに.. Word配列をvalueに..
- valueが重複するWordは削除する
- **読み込むタイミング**
- Auto save時
- 可能なら一番精度は高い
- Current file complementが不要になる
- ファイル変更時
- パフォーマンス面では既存ユーザーにも安心
- Current file complementとは棲み分ける
- **読み込みとサジェストにかかる時間**
- サジェストは現状維持が望ましい
- 読み込みは..
- 2秒に1回なら数十msが限界
- できれば1桁ms
- ファイル移動時なら100ms~200msでも許容できる
## パフォーマンスについて
`{key: [...values]}`をflat化した場合の違い。
```ts
function* flatt(m: { [key: string]: number[] }): Iterable<number> {
for (const [key, value] of Object.entries(m)) {
yield* value;
}
}
// こっちより
const m = Object.values(mapping2).flat();
// こっちのほうが2倍速い
const m = Array.from(flatt(mapping2));
```