もしも、かおもさんのエミュレータがなければ
unity editor上で profiler分析ができません
するとこんな手探りしかできないのではないでしょうか
負荷を変えて測定して 10回づつ測定しました
scriptが最終行まで実行されたら◯
errorが出たらxとしました
数字は scriptが処理にかかった時間です
負荷が小さく16ms以内ならリニアな関係だろうと予想できます
負荷が大きくなれば16msを境に x ばかりと予想しましたが
測定では 負荷が大きくなると 結果がばらついて
ラチがあきません 再現性がなさすぎます
そもそも 処理時間なら Unity profilerで分析したほうが
よいと思い出しました
Clusterのこの警告とerrorは いずれも
profilerが使えないという前提で
[スパイクを簡易的に表現しようとしている]
・・・のではないかと思い当たりました
この赤!マークのエラー を考察してみます
[Script has allocated too much memory]
直訳では「メモリーをたくさん喰っています」という文ですが
いままでも 入室の最初に見かけることが多く 実態に合わない的外れなエラーという印象でした
おそらく言葉どおりの意味ではなく 出現するタイミングから 黄色警告と同じような
「処理時間が長いよ」という意味に解釈したほうがいいように思います
あるいは 分類不能なエラーは何でもこれに紐づけしているのかもしれません
そういえば Unity profilerで観察しているとplay game直後に スパイクが生じがちなので
結局 スパイクを表現しようとしていると勝手に解釈しています
(個人の見解です。検証実験や文献上の根拠はありません)
この黄色の警告を考察してみます
> WARN: script execution (383ms) exceeded the soft limit (50ms).
1つのscriptの処理時間ではなく 複数のスクリプトの合計
たぶん ワールド全体の処理時間を意味しているようです
だとすると どのスクリプトの何行目なのかという 情報は期待できないかもしれません
未解決なことが多々あります
soft limit (50ms) hard limit (500ms)の意味が不明です
ソフトウエア上の制限とハードウエア上の制限でしょうか
単にゆるい制限ときつい制限という意味でしょうか
「将来的に施行される予定」とか 500msに緩和されたとか
よくわからないことが多々ありますが 報告を一旦ここまでとします
考察はいくつかの実験から仮説を立てたもので 文献上の裏付けがありませんので誤解なきように
提案------------------
ここでさらに稚拙な提案をしておきます
別の開発環境ではlua言語で nilトラップ というテクニックがありました
「ユーザーの作ったscriptを中断するならば
処理時間が制限を超えた時に何らかの信号を出して
ユーザーがそれにトラップをかけて
対策処理を書けるようにしたらどうでしょうか」
処理時間を短くしろという警告だけでは工夫が足りないように思います
・・以上 測定の体験と考察と提案です
なお専門家ではないので理解に間違いがあればお許しください
環境 CCK2.8.0 かおもさんのエミュレータ(CSEmulator2.20)
測定用の scriptとuntityデータを置きました
https://drive.google.com/file/d/1pnkYNNRRa1jhXuPtkqwuxpBgsYMdiGAX/view?usp=sharing
test_ms_009.unitypackage
test_ms_009_readme.txt
この2つを含む zipファイルです
#cluster #ClusterScript