93: 処理速度


最新状況

タイトル 処理速度
状態 保留
カテゴリ バグ, その他
作成日時 2006-08-05 10:08:32
最終更新日時 2008-09-16 22:56:01

履歴

1 | 2006-08-05 10:08:32 | 提案
tormtorm at yahoo.co.jp
20060802から処理速度が急激に落ち込んでしまった様です。
こちらの速度比較スプリクトで測った所、
20060729と20060802ではmsp等で1/2以下になりました。

ttp://andolf.hp.infoseek.co.jp/cgi-bin/src/n_0119.zip

2 | 2006-08-13 04:06:11 | 保留
ogapee at aqua.dti2.ne.jp
ご報告ありがとうございます。

この原因は、バグ報告「 タイトルは特殊な状況下でのエフェクト」への対処と
して、画面出力用の画像バッファを内部的に毎回2種類生成するようにしたた
めです。

そのため、いただいたスクリプトのように瞬間表示でひたすら描画を繰り返す
演出では処理時間がほぼ倍になります。ただし、通常の画面効果は以前と同じ
処理速度で動作しますし、文章を読み進めていく場面では体感速度はそれほど
低下しないと思います。

これはエンジンの再現性を保つ上で必要な処理なのですが、処理速度を犠牲に
しないで同等のことを実現できる方法があるかもしれません。いい方法を思い
つかないのでさしあたりこの報告は保留とさせていただきますが、もし何かア
イディアがありましたらリプライをつけてください。

20060812 で2種類目の生成効率を少し上げたので、若干は改善していると思い
ます。

3 | 2008-08-20 03:42:19 | 保留
tormtorm at yahoo.co.jp
・スプライト移動FPS例
onscripter-20060729 89fps
onscripter-20060802 63fps
onscripter-20060812 85fps
onscripter-20080817 52fps


onscripter-20060802での対応、有難う御座いました。
実用に耐えられるレベルまで回復したと思います。
ただ、onscripter-20080817 にてまた急激に
処理速度が落ち込んでしまった様です。

4 | 2008-08-23 18:55:03 | 保留
tormtorm at yahoo.co.jp
exp-20080823 で改善していると思います。
ご確認ください。

5 | 2008-08-24 00:48:56 | 保留
tormtorm at yahoo.co.jp
先日と同じ条件で測った所 66fps となりました。
これだと以前落ち込んだ時と同じ位なので、
もし可能でしたらもう少し改善して頂けると助かります。

6 | 2008-08-24 03:42:38 | 保留
ogapee at aqua.dti2.ne.jp
exp-20080823a でまた少し改善しました。

こちらの環境では、msp, amsp ともに
exp-20080817b   90fps
exp-20080823   130fps
exp-20080823a  170fps
くらいの数値が出ています。
saveon, saveoff どちらも変わりません。

ご確認ください。

7 | 2008-08-24 04:55:14 | 保留
tormtorm at yahoo.co.jp
こちらの環境では 80fps まで持ち直しました。
ありがとうございました。

また時間がある時にもし可能であれば、
全盛期の速さまで改善して貰えたらなとは思うのですが、
流石に難しいですかね^^;我侭ばかり言って申し訳ないです。

8 | 2008-08-26 01:52:32 | 保留
tmkk at smoug.net
あまり良い解決策では無い上にx86限定ですが、処理時間を食っていると思われ
る
AnimationInfo::blendBySurface
ONScripterLabel::alphaBlend
をMMX,SSE,SSE2で書き直してみました。
こちらの環境(MacOSX,Core2Duo 2.2GHz)では、SSE2使用時で、
msp,amsp : 128fps -> 175fps (36%向上)
drawsp   : 250fps -> 450fps (80%向上)
程度の効果がありました。SIMDの実装が悪いCore2Duoより前のCPUではあまり効
果はないかもしれません。

パッチを添付しておきます。USE_MMX, USE_SSE, USE_SSE2マクロでそれぞれ
MMX,SSE,SSE2をイネーブルします(排他)。gccの場合、これに加えてコンパイル
オプションに-msse,-msse2等が必要かもしれません。
onscripter_x86_simd.diff (application/octet-stream, 15873 bytes) [ダウンロード]

9 | 2008-08-26 01:54:51 | 保留
tmkk at smoug.net
すみません。上記の
AnimationInfo::blendBySurface
は
AnimationInfo::blendOnSurface
の間違いです。

10 | 2008-08-26 07:09:43 | 保留
ogapee at aqua.dti2.ne.jp
パッチありがとうございます。

こんな方法があったのですね。知りませんでした。
今までもインランアセンブラで MMX, SSE, SSE2 を使うことがあったのです
が、移植性が低いと思っていました。

USE_SSE2 を定義し Visual Studio 2005 C++ でコンパイル・実行してみたとこ
ろ、こちらの環境(Core2 Duo)では、msp, amsp ともに
20080824   210fps
と速くなっていることを確認しました。

取り入れさせていただく方向で考えますが、パッチの中身を理解したいので、
しばらくお待ちください。

11 | 2008-09-16 22:56:01 | 保留
tmkk at smoug.net
コードを整理して若干最適化してみました。少しだけ速くなっていると思いま
す。コメントも付けてみましたので参考にどうぞ (SSE、SSE2では16bit符号無
し乗算を使って少々トリッキーな事をやっています)。

ONScripterLabel::alphaBlendの方はmsp,amspの速度には寄与しないようなので
省きました。
AnimationInfo_x86_simd.diff (application/octet-stream, 7013 bytes) [ダウンロード]

[リプライをつける]
Bug Tracking System 影舞 0.8.8
Powered by Ruby 1.8.7