-
Notifications
You must be signed in to change notification settings - Fork 121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
モデル読み込みをlazyにしたい #116
Comments
実装難度はかなり高いですが、3案目としてloadを非同期にすることにより体感速度をかなり向上させることができるようになるはずです Pros 良くなる点起動が早くなる Cons 悪くなる点実装難度が高い 実現方法まず
2案目のようにload済みか返すAPIを定義しても良いですが、なくてもライブラリ機能は使うことができるかと 既存の 実装にあたっては各load状態が破壊されないように適切にlockなどを行う必要があると思われるのでかなり難しいです |
改めてコード読んでみたのですが、initializeではspeakerのload以外にもやってることがありそうだったので残す必要がありそうですね |
たしかに非同期にできるとさらに使い勝手が上がるかなと思いました! |
こちら、いったん取り組んでみたいと思います! |
↑「forwardするタイミングでmodelがloadされていなかったらloadする」は一旦未実装です。 |
とりあえず、モデル読み込みを分割できるようになったので、閉じたいと思います! |
内容
で複数モデルを読み込めるようになりました。
initializeが呼ばれたタイミングで全部loadされています。
実際に製品版では複数のモデルを読み込んでいますが、そのせいでinitializeが遅く(とくにmacでは20秒近くかかる)なっています。
全部loadする必要があるユーザーは珍しく、使わないキャラクターのモデルはloadしなくて良いはずです。
なので、必要になったタイミングでモデルをロードできる設計にしたいです。
Pros 良くなる点
起動が早くなる
Cons 悪くなる点
APIを変えないといけないかも
実現方法
2つあると思います。
1つ目が、forwardするタイミングで、modelがloadされていなかったらloadする方法です。
この方法だとAPIは変わりませんが、forwardしたときに初回だけは遅いという副作用が生じます。
2つ目が、model(もしくはspeaker_id)を指定してmodelをloadするAPIと、load済みかを返すAPIを用意し、毎回エンジンなどから実行してもらう方法です。
この方法はモデルをloadするタイミングをアプリ側で制御できます(例えばキャラが選ばれたタイミングからloadし始めるということもできる)が、APIの変更が生じます。
どっちも実装するのもありかも。
その他
そろそろ4期生が現れてくるタイミングです。
更に起動時間が長くなってしまいそうなので、できればそれまでに実装しておきたいです・・・!
The text was updated successfully, but these errors were encountered: