「Tonyu Tip_処理速度について」の編集履歴(バックアップ)一覧はこちら

Tonyu Tip_処理速度について」(2005/10/06 (木) 00:37:06) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*Tonyuの処理速度について #contents **測定環境 OS        : WindowsXP Tonyuのバージョン : 1.21 CPU        : Athron64 3400+ 800MHz(2.4GHzをクロックダウン) グラフィックカード : 高性能 **オブジェクトの実行負荷 オブジェクトを生成した場合の実行負荷 (オブジェクトの実行に要する時間をSpriteの値を基底に正規化したもの) (値の大きいものほど負荷が高い) |''オブジェクト'' |''負荷''| | | | |Sprite |1.0 | |Dx_基本 |1.8 | |Dx_ScaleX=2 |3.3 | |Dx_半透明 |2.8 | |Text_半角 |4.4 | |Text_全角 |3.1 | |Panel_50*50 |2.8 | |Panel_100*100 |5.9 | |Panel_200*200 |13.3| |Secret |0.5 | ><負荷の算出式> > 負荷 = 1 / ( [そのオブジェクトのFPS] / ["Sprite"のFPS] ) >但し、FPSは"Sprite"のFPSが60以下になるよう、オブジェクト数を増やして測定している ・各々”Char”を省略している ・TextCharの項目分けは、表示するテキストの種類  (左から、テキスト無し、半角英数字1文字、同2文字、全角1文字) ・PanelCharの項目分けは、パネルのサイズ ****memo ・表示されるオブジェクトは、その大きさに比して負荷が重くなる ・オブジェクトが画面内に表示されていない場合、負荷は軽くなる  (ex.alpha=0、座標が画面外、などの場合) ・測定環境により、値は大きく変わる可能性がある(未確認) **命令の処理時間 命令の実行にかかる負荷。 (命令の実行に要する時間を演算命令の値を基底に正規化したもの) |  ''命令'' |''負荷''| | | | |for |2.1 | |while |2.1 | |if |0.8 | |演算命令 |1.0 | |a=a+b; |1.5 | |a++; |1.0 | |a+b (文字列結合) |9.0 | |a; |0.5 | |関数呼び出し |1.3 | |print("@") |881.3 | |drawText("@") |62.8 | |drawText("@") |49.7 | |drawLine_長さ10 |10.4 | |drawLine_長さ100 |10.8 | |fillRect_50×50 |16.9 | |fillRect_100×100 |33.5 | |$panel.drawText("@") |199.0| |$panel.fillRect_100×100|150.8| |Array.get() |2.5 | |Array.set(1) |2.9 | |Array.set("@") |21.7| "@"は全角 "@"は半角 演算命令には、”算術演算”、”論理演算”、”代入”が含まれる。 算術演算の例 : a+b; 論理演算の例 : a&&b; 代入の例   : a=b; ><負荷の算出式> > 負荷 = [ その命令の実行時間 ] / [ "演算命令"の実行時間 ] ****memo ・実際にかかる時間が知りたい場合は、演算命令の実行時間を測定し、表の値にそれを掛ければよい **FPS算出式(暫定) >FPS = 1/([命令の実行時間の合計]*10+[オブジェクトの実行時間の合計]) (時間の単位は秒) (命令の実行時間は、描画系命令のみに影響される様に感じる。  つまり、演算系命令の実行時間は関係ないのでは?) [実行時間の合計]は、"命令の実行時間"の項目で解説済み。 [オブジェクトの処理時間]は、while()ループのみを行うオブジェクトを生成し、そのときのFPSを測定、そしてその逆数を取ることで求められる。  但し、FPSは60以上にはならないので、60以下になる数のオブジェクトを生成し実行時間を求め、その時間をオブジェクトの数で割る必要がある。 "Sprite"の値さえ求めれば、"オブジェクトの実行負荷"の表の値に掛ける事で、他のオブジェクトの実行時間も求められる。 フツーに考えれば、*10は必要ないはずだが、これが無いと結果が合わない。何故?
*Tonyuの処理速度について #contents **測定環境 OS        : WindowsXP Tonyuのバージョン : 1.21 CPU        : Athron64 3400+ 800MHz(2.4GHzをクロックダウン) グラフィックカード : 高性能 **オブジェクトの実行負荷 オブジェクトを生成した場合の実行負荷 (オブジェクトの実行に要する時間をSpriteの値を基底に正規化したもの) (値の大きいものほど負荷が高い) |''オブジェクト'' |''負荷''| | | | |Sprite |1.0 | |Dx_基本 |1.8 | |Dx_ScaleX=2 |3.3 | |Dx_半透明 |2.8 | |Text_半角 |4.4 | |Text_全角 |3.1 | |Panel_50*50 |2.8 | |Panel_100*100 |5.9 | |Panel_200*200 |13.3| |Secret |0.5 | ><負荷の算出式> > 負荷 = 1 / ( [そのオブジェクトのFPS] / ["Sprite"のFPS] ) >但し、FPSは"Sprite"のFPSが60以下になるよう、オブジェクト数を増やして測定している ・各々”Char”を省略している ・TextCharの項目分けは、表示するテキストの種類  (左から、テキスト無し、半角英数字1文字、同2文字、全角1文字) ・PanelCharの項目分けは、パネルのサイズ ****memo ・表示されるオブジェクトは、その大きさに比して負荷が重くなる ・オブジェクトが画面内に表示されていない場合、負荷は軽くなる  (ex.alpha=0、座標が画面外、などの場合) ・測定環境により、値は大きく変わる可能性がある(未確認) **命令の処理時間 命令の実行にかかる負荷。 (命令の実行に要する時間を演算命令の値を基底に正規化したもの) |  ''命令'' |''負荷''| | | | |for |2.1 | |while |2.1 | |if |0.8 | |演算命令 |1.0 | |a=a+b; |1.5 | |a++; |1.0 | |a+b (文字列結合) |9.0 | |a; |0.5 | |関数呼び出し |1.3 | |print("@") |881.3 | |drawText("@") |62.8 | |drawText("@") |49.7 | |drawLine_長さ10 |10.4 | |drawLine_長さ100 |10.8 | |fillRect_50×50 |13.4 | |fillRect_100×100 |16.9 | |fillRect_200×200 |36.8 | |$panel.drawText("@") |199.0| |$panel.fillRect_100×100|83.9| |Array.get() |2.5 | |Array.set(1) |2.9 | |Array.set("@") |21.7| |str.split() |30555.5 | |copyRect_50×50 |40.5 | |copyRect_100×100 |129.6 | |copyRect_200×200 |494.8 | |fw.writeLn("@") |57.9 | |fr.readLn() |46.3 | |valueOf("1") |61.1 | |valueOf("1.0") |12.9 | "@"は全角 "@"は半角 演算命令には、”算術演算”、”論理演算”、”代入”が含まれる。 算術演算の例 : a+b; 論理演算の例 : a&&b; 代入の例   : a=b; ><負荷の算出式> > 負荷 = [ その命令の実行時間 ] / [ "演算命令"の実行時間 ] ****memo ・実際にかかる時間が知りたい場合は、演算命令の実行時間を測定し、表の値にそれを掛ければよい ・split()は異常に重い(演算命令の実に3万倍!)。使用時は注意されたし。 **FPS算出式(暫定) >FPS = 1/([命令の実行時間の合計]*10+[オブジェクトの実行時間の合計]) (時間の単位は秒) (命令の実行時間は、描画系命令のみに影響される様に感じる。  つまり、演算系命令の実行時間は関係ないのでは?) [実行時間の合計]は、"命令の実行時間"の項目で解説済み。 [オブジェクトの処理時間]は、while()ループのみを行うオブジェクトを生成し、そのときのFPSを測定、そしてその逆数を取ることで求められる。  但し、FPSは60以上にはならないので、60以下になる数のオブジェクトを生成し実行時間を求め、その時間をオブジェクトの数で割る必要がある。 "Sprite"の値さえ求めれば、"オブジェクトの実行負荷"の表の値に掛ける事で、他のオブジェクトの実行時間も求められる。 フツーに考えれば、*10は必要ないはずだが、これが無いと結果が合わない。何故?

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー