12/18

日記

2025/12/18

パフォーマンス

チューニング基礎

  • チューニングは多くの場合、時間またはコードの煩雑さのトレードオフ。
  • あるところで紹介されているテクニックが、全く無意味なこともあるので、なぜそのテクニックが効果的か理解する。
  • ボトルネックを見つけ出すことが重要

パフォーマンス指標RAIL

https://web.dev/articles/rail?hl=ja

以下の頭文字

  • Response
    ユーザーがボタンをクリックしてダイアログが表示される時間
    目安100ms以内
  • Animation
    フレーム生成時間
    目安16ms 60フレームを維持せよということかな
    安定的にするにはJSの処理時間は6msが望ましい。
  • Idle
    responseやanimation、Loadが終わった後に、ユーザーのアクションを待っている状態。
    JS実行最中はユーザーからの入力受け取りがJSの実行が終わるまで遅延することになる。
    結構わかりにくかったので参考 https://qiita.com/naokikobashi/items/55b9d643f88215a656aa
  • Load
    Webページコンテンツ読み込み時間
    目安3G 接続が低速なミッドレンジのモバイル デバイスで、ページを 5 秒以内にインタラクティブに読み込むこと

Iphoneとmac接続してIphone画面の検証ツールをmacに表示させる

Webインスペクタで色々やってできた。
使ったことなかったけど、これは便利で楽しい。クリックで要素選択とか。
レイヤータブとか、事前知識を最近つけたおかげでより理解できた。

Three.js

CanvasTexture

canvasTextureの練習、うまく行きはした。けどパフォーマンスの観点でど忘れしていた事があるのでメモ

PlaneからPoints

ジオメトリはPlaneGeometry、メッシュはPointsで描画されてる場合、
blending: THREE.AdditiveBlendingをやってみるとわかるが、pointが2重で描画されている。

これはデフォルトでPlaneGeometryはインデックスバッファを持ち、同じ頂点を複数の三角形で共有し、メモリと描画を最適化している。

Pointsは各頂点が個別の点として描画されるため、不要。なのでsetIndex(null)で削除する。

感想

web.devいいね。色々なベストプラクティス学べそう。将来的にWebWorkerこれで学ぼう。

I found a site name of web.dev. which is good tool to learn various best practices.
I'll use this to learn WebWorkers in the future.