このページは Monoに関連する技術、テクニック、LSOとの差異などをまとめるためのページです。
参考[]
- Monoにおけるリスト演算の詳細
- Monoでのスクリプティング最適化手法 - by Jam Meili 翻訳文書
- Babbage Lindenオフィスアワー・ログ
関連情報[]
Script Idle time increased under MONO recompilation[]
- MonoではIdle timeが増加している
- JIRA: SVC-2967でのBabbage Lindenによるコメント
- Monoでは他のアプリケーション・ドメインに遷移する必要があるかどうかをチェックする分、オーバーヘッドが生じている。そのため、Top Scriptでみると負荷が増えているように見えるがその通りかというとそう言うわけでもない。1000個のオブジェクトがIdle timeになっていたとしても、それは全体からすれば5%以下程度でしかないし、そのような状態は正常な状態とは言いがたい。保留動作がないIdle状態のスクリプトに関するスケジューリング動作を変更して、フレーム単位の制御の外に持っていくようにすれば こういった影響は避けることができるようになると思うが、具体的な予定はいまのところない。
- さらに、LSOよりもMonoがCPU timeを消費する可能性がある場合としては、大きなリストや文字列をライブラリ・ファンクションに投げて それらをLSLに適合するように再配列しなおさなくてはいけない場合などがあるだろう。個人的にはコードをJIT化して実行する分の向上幅でこれらは打ち消せると考えているが、場合によっては そう、MonoのほうがCPU timeを消費してしまうということもあるかもしれない。
- もしそのような特殊事例を発見したら、その state_entryハンドラーに関する問題を再現するための簡単なスクリプトを作って私に送って欲しい。こちらにはそのようなスクリプトをプロファイラーを通してテストする環境を用意してある。
Scripting performance cut in half[]
- Server 1.23.1.92102以前・以後で何も変更していないのにScript timesが倍増している
- JIRA: SVC-2649
- このJIRA案件はMono限定の話題ではないがScript Timeの表示が何らかの条件によって容易に変化しうる指標であることをかいまみることができる。JIRAにおいてProspero Lindenがコメントをしているが「グリッド全体としては傾向は変化していない」。Prosperoが見ているScript Timeと住民が見ることができるものは、同じものではない可能性もあるため、Script Timeとはそもそも何なのか?どういった指標となりうるものなのか?の検証が必要と思われる。
- Script Timeの実装については誰に聞けばよい?? → Prospero Linden、Andrew Linden、Babbage Linden?
チェックが必要な項目[]
- Babbage Linden: each frame, each script should only get around 185us regardless of what it's doing ■
- Babbage Linden: so, if you put a string in a list. then repeatedly copy the list or append it to another list. the runtime copies a 4 byte reference to the string. ■
- Babbage Linden: there is an overhead from the arraylist. and the object gets a vtable and sync data which adds 8 bytes ■