Closed kamecha closed 8 months ago
ツリー形式じゃなくて、channelIDとその本体をmapっぽいデータ構造で保持しておけば良さそう ツリー自体は簡単に再現できる事だしね
deno標準のベンチマークとかdduのprofile機能とかに乗っかって、性能比較もできるようにしたい
あと当たり前だけど、キャッシュは本体側に置いといて、ddu・ddcに限らず連携するときに早くなってて欲しい
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機能を使った場合↓みたくなった
これちなみにpathを取得する時にパスをconvertしないと短縮される
んでもって、api叩いてチャンネル一覧を取ってくる処理とコンバートする処理とを別で計測した場合↓
dduで取ってくる時は全体のチャンネルと未読チャンネルも一気に取ってきてるから、コンバート処理が2回入って0.5の2倍分くらいは遅くなってる感じ
コンバート処理をmapキャッシュ使ってやった場合↓↓
いつキャッシュを生成するのか問題とか、そもそものチャンネル取得周りが汚い問題とか色々あるな...
ひとまず以前同様ソースを呼び出すたびにapiは叩いて、そのたびにキャッシュを更新するようにしてみるか...
チャンネル関連の処理をするたびに、サバから全チャンネル取ってきて諸々してるから、どこかに保存しておく
サバとの整合性はサバから取ってきたものとのチャンネル数から判定したりするとよさげ