BlenderにおけるUSDインポートの奇妙な遅延事例

2024-12-22

開発者がBlenderでUSDシーンをインポートする際に、予想外に遅いインポート時間の問題に遭遇しました。プロファイリングの結果、ボトルネックはBlenderの内部IDソート関数`id_sort_by_name`にあることが判明しました。この関数はO(N)の複雑度を持つと期待されていましたが、USDファイルの命名スキームのためにO(N²)に劣化していました。命名規則を変更し、ソートアルゴリズムを最適化することで、開発者は小さなファイルのインポート時間を4分40秒から8秒に短縮しました。しかし、根本的な問題はBlenderがソートされたIDを必要とすることにあり、連結リストをトライ木やハッシュテーブルに置き換えることが提案されています。この最適化は、パフォーマンスチューニングにおける共通の課題、つまり予期せぬ複雑性の特定と解決を浮き彫りにしています。

開発