kamecha / traqVimPractice

Unofficial traQ Vim/Neovim plugin.
MIT License
7 stars 0 forks source link

チャンネルのツリー構造をキャッシュとかに保存する #35

Closed kamecha closed 8 months ago

kamecha commented 1 year ago

チャンネル関連の処理をするたびに、サバから全チャンネル取ってきて諸々してるから、どこかに保存しておく

サバとの整合性はサバから取ってきたものとのチャンネル数から判定したりするとよさげ

kamecha commented 1 year ago

ツリー形式じゃなくて、channelIDとその本体をmapっぽいデータ構造で保持しておけば良さそう ツリー自体は簡単に再現できる事だしね

kamecha commented 1 year ago

traQ本体だと↓こんな感じに実装してるらしい

https://github.com/traPtitech/traQ_S-UI/blob/07d2c543e83dc0f55f2bb2babf63f443ffea16d9/src/store/entities/channels.ts#L19

kamecha commented 11 months ago

deno標準のベンチマークとかdduのprofile機能とかに乗っかって、性能比較もできるようにしたい

kamecha commented 10 months ago

あと当たり前だけど、キャッシュは本体側に置いといて、ddu・ddcに限らず連携するときに早くなってて欲しい

kamecha commented 8 months ago
function s:profile_channel_cache() abort
    let l:startTime = reltime()
    call ddu#get_items(#{ sources: ["channel_rec"] })
    echomsg "Elapsed time: " . reltimestr(reltime(l:startTime)) . " sec"
endfunction

command -nargs=0 TraqChannelCache call s:profile_channel_cache()

↑こんな感じの簡易的な計測 & dduのprofile機能を使った場合↓みたくなった image

kamecha commented 8 months ago

これちなみにpathを取得する時にパスをconvertしないと短縮される

image

んでもって、api叩いてチャンネル一覧を取ってくる処理とコンバートする処理とを別で計測した場合↓ image

dduで取ってくる時は全体のチャンネルと未読チャンネルも一気に取ってきてるから、コンバート処理が2回入って0.5の2倍分くらいは遅くなってる感じ

kamecha commented 8 months ago

コンバート処理をmapキャッシュ使ってやった場合↓↓

image

いつキャッシュを生成するのか問題とか、そもそものチャンネル取得周りが汚い問題とか色々あるな...

ひとまず以前同様ソースを呼び出すたびにapiは叩いて、そのたびにキャッシュを更新するようにしてみるか...