タスク:同一ツリーに対する多重コールが重い?

Issue #607 new
暗黒 騎士 created an issue

HAND氏が現在テスト中の「Shall We リバーシ?」というシナリオでPyが1.50より重いという現象を確認しています。 自分の環境では大体以下のような待ち時間でした。

1.50
娘~2
ダスキン~3
親父 35

Py
娘~4
ダスキン~5
親父3~12

それで、HAND氏側もあたりをつけていた、「存在しない情報カードを大量に消す」負荷実験をしてみたのですが、Pyだと5000枚ぐらいまでは一瞬だったのですが、5万枚で若干もたつきはじめ、50万枚で12秒に達しました。1.50だと50万枚でも一瞬でした。 I/O読み書きの高速化が難しいことは前回教えて頂いたのですが、「この使い方であれば書き込みは回避できているのでは? なにかしらボトルネックがあるのかもしれない」と思ったので課題を作らせて頂きます。(自分の見たて違いでしたらゴメンナサイ)

https://bitbucket.org/akkw/cardwirthpy-reboot/downloads/Classic_test.zip

カード配布メニュー>存在しない情報カードを消す処理が重い(Py)

Comments (2)

  1. k4nagatsuki repo owner

    pull request #2077

    問題の実態に合わせて種別を変更しました。

    改善を試みましたが、あまり効果的ではないようです。テストシナリオのケースだと、スタートのコールと情報カードの削除に同じくらいの時間がかかっており、それらの内容を実行しないようにしても極端に処理が速くなるわけではありません。

    つまりイベント処理全体を見直す必要がありそうですが、かなり大変です。

  2. 暗黒 騎士 reporter

    対処ありがとうございます。優先度を下げてタイトルを変えました。

    テストシナでは12→11秒ぐらいに改善した気がします。 すいません、あれから色々試してみましたが情報カードに限った話ではなかったようですね(多重コールの問題?)

    50万の処理をフラグ変更:Trueに変えた場合は15秒ほど掛かっていました。1.50ではやはり一瞬でした(えぇ…)

  3. Log in to comment