[過去ログ] ■吉里吉里/KAG/TJS雑談質問スレ■その26 (1001レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
362
(1): 2012/09/09(日)00:27 ID:UoexBhAR(1/6) AAS
TJS2で辞書配列の作成がやたらめったら遅い。多分コレが該当してる。
外部リンク[html]:www.geocities.jp
配列で作り直して速度はなんとかなったけど、分かり辛くてメンテが
大変で困ってる。吉里吉里3なんか要らないから、辞書配列周りを
もう少し高速化してくれ…!
365: 2012/09/09(日)04:05 ID:UoexBhAR(2/6) AAS
>>364
実測してみたら、数千要素くらいからがくっと速度が下がる。気持ち
O(n^2)になっているような。特にassignStructでコピーすると顕著。
件のURLにあるように、ちょっと長いゲームではセーブラベルが
数万くらいにはなるので、これや、これに付随するデータを保存する
のが大変なの。
逆にいえば、そんなに大きい辞書配列を使わなければ、そんなに
省13
367: 2012/09/09(日)12:00 ID:UoexBhAR(3/6) AAS
>>366
辞書配列じゃなくて普通の配列なら速いことがわかっているので、今は
普通の配列で組みなおして速度的には問題なくなっている。ただ、
複雑になってメンテが大変なのをなんとかしたいんだよ。

C++でも組めるけど、それは更に面倒だし、単機能のためだけにdll書く
のもなー、というのが本音。辞書配列ならかなり簡単に書けるから…。

以下みたいなスクリプト書いて所要時間をプロットしてみたら、
省8
368: 2012/09/09(日)12:03 ID:UoexBhAR(4/6) AAS
ちなみに同じスクリプトを配列ベースにすると、40000要素数の時に
手元の環境では辞書配列の1/100以下の時間で終わる。うーん面白い。
370: 2012/09/09(日)15:07 ID:UoexBhAR(5/6) AAS
線形探索しているから、じゃないはず。もしそうなら、既存の
巨大な辞書から要素を取り出す作業も同じくらい遅くなるはずだけど、
そうなっていないから。「作成」が遅いみたい。だから今はメモリ
かなーと思っている。要求の度に素直に確保してるんじゃないかなー、
と。作成時にソートしているかどうかはまだ不明。
ハッシュ持てば早くなるのはその通りだけど、要素の種類がたくさん
あるから、適当なハッシュ関数が作れるのかどうか。
省2
372
(1): 2012/09/09(日)23:06 ID:UoexBhAR(6/6) AAS
>>371
rehash()追加、ありがとう!
でも残念ながら、以下のスクリプトで実測すると、rehash()が
ある場合とない場合とで、実行時間の差は1%程度で殆ど変わらな
かった…。難しいもんだね。

Plugins.link("ScriptsEx.dll");
for (var i = 1; i <= 40; i++) {
省8
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.031s