友人が気づいたテストケースをテストしています。彼は window.innerheight をループで使用していましたが、fps が大幅に低下しました。
テスト用に作成した jsperf へのリンクは次のとおりですhttp://jsperf.com/innerheight
私が思いつく唯一の説明は、これがゲッターであり、呼び出しごとに実際の高さを計算するということです。そうですか?これを確認できるドキュメントはありますか?
友人が気づいたテストケースをテストしています。彼は window.innerheight をループで使用していましたが、fps が大幅に低下しました。
テスト用に作成した jsperf へのリンクは次のとおりですhttp://jsperf.com/innerheight
私が思いつく唯一の説明は、これがゲッターであり、呼び出しごとに実際の高さを計算するということです。そうですか?これを確認できるドキュメントはありますか?
この質問は数年前に投稿されましたが、他の誰かがここで同様の結果を経験している場合に備えて.
このブログから:
問題は、getBoundingClientRect に似たものを使用するたびに、WebKit が dom のレイアウトを再計算するのが好きなことです。(window.innerHeight/innerWidth を取得しても、再計算が強制されます) ... DOM から計算されたディメンションを取得するすべての呼び出しは、キャッシュするか、回避する必要があります。
初期化とサイズ変更のたびにウィンドウのサイズをキャッシュすると、パフォーマンスが大幅に向上しました。
最初のループ (innerheight) では、オブジェクト プロパティにアクセスし、それを に割り当てていh
ます。2 番目のループ (キャッシュ) では、h
. もちろん、キャッシュされた方が高速になります。