Skip to content
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

タイムセンシティブなコンポーネントの正確な描画 #10510

Closed
acid-chicken opened this issue Apr 7, 2023 · 18 comments · Fixed by #10547
Closed

タイムセンシティブなコンポーネントの正確な描画 #10510

acid-chicken opened this issue Apr 7, 2023 · 18 comments · Fixed by #10547
Labels
✨Feature This adds/improves/enhances a feature packages/frontend Client side specific issue/PR

Comments

@acid-chicken
Copy link
Member

Summary

MkAnalogClock や MkDigitalClock などはパフォーマンスに影響を与えないようにわざと精度を悪くしているが、最悪 1 秒ズレるのはズレすぎな気がする
requestAnimationFrame をいろんなところで呼ぶのが多分良くないと思われるので、グローバルで 1 コールにしたり、あるいは requestIdleCallback を活用できないだろうか

@acid-chicken acid-chicken added ✨Feature This adds/improves/enhances a feature packages/frontend Client side specific issue/PR labels Apr 7, 2023
@acid-chicken
Copy link
Member Author

API への理解が間違っていなければこう?

image

@tamaina
Copy link
Contributor

tamaina commented Apr 8, 2023

requestAnimationFrame をいろんなところで呼ぶのが多分良くないと思われる

API全く理解してないけどいろんなところで呼んじゃいけないんだ…

@acid-chicken
Copy link
Member Author

API全く理解してないけどいろんなところで呼んじゃいけないんだ…

いろんなところで闇雲に呼ぶと(UA は優先度がわからないので)単純に時間がなくなる→そのためしゅいろは避けているはずという説明が正確か

@acid-chicken
Copy link
Member Author

requestIdleCallback で直接更新すると今度は描画をやり直しになるので却って逆効果のはず

@acid-chicken
Copy link
Member Author

Related to #1689

@syuilo
Copy link
Member

syuilo commented Apr 11, 2023

ブラウザによるレンダリングというより、Vueによるコンポーネントのレンダリング(vdom再構築)が高価だからそれを避けたいというのがある

@syuilo
Copy link
Member

syuilo commented Apr 11, 2023

それを考えると #10547 の効果はあまりない(か、むしろ悪化する?)気がする

@acid-chicken
Copy link
Member Author

実際のパッチは変更なし(MkAnalogClock)か少数のノード(MkDigitalClock)だと思うけどそこまで VDOM のパフォーマンスって悪いのかな

@syuilo
Copy link
Member

syuilo commented Apr 12, 2023

MkTimeに関してはかなり同時に存在することになるわね

@acid-chicken
Copy link
Member Author

とここで気づいたけど VDOM 相手だと requestAnimationFrame は間に合わない説ある

@EbiseLutica
Copy link
Contributor

そもそも時計みたいなコンポネはVDOMで描画すべきじゃないのかもしれない。

@acid-chicken
Copy link
Member Author

MkTimeに関してはかなり同時に存在することになるわね

キャッシュというかインスタンスごとに比較が高速に行われるような改善を加えるべきそう

@acid-chicken
Copy link
Member Author

というか MkTime の正確性は割とどうでもいいからこれは setTimeout でいいじゃ

@acid-chicken
Copy link
Member Author

MkTime は

  • 現行の実装にする
  • パッチした実装に加えて「ビューポート上に見えているなら更新する」ロジックを加える

の 2 パターンを実際に比較してみたい

@acid-chicken
Copy link
Member Author

MkTimeに関してはかなり同時に存在することになるわね

@syuilo 戻した

@acid-chicken
Copy link
Member Author

@syuilo これ懸念点は残っている?

@syuilo
Copy link
Member

syuilo commented May 9, 2023

確認する

@acid-chicken
Copy link
Member Author

@syuilo どうだった?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨Feature This adds/improves/enhances a feature packages/frontend Client side specific issue/PR
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants