HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0105
dekamega文字列の一部置き換えの最適化2解決


dekamega

リンク

2012/1/5(Thu) 21:09:45|NO.44107

こんにちわ
文字列の一部を置き換えるスクリプトを以下のような形で組んでいるのですが、
もっと早い方法は無いでしょうか。

#module

//指定文字列の指定indexを指定文字に置き換える
#defcfunc STR_exchange_a_char_an_index str rec_func_text, int rec_func_index, str rec_func_exchange_char
send_result_text=rec_func_text
if (strlen(send_result_text)<rec_func_index) | (rec_func_index<0){//不正なindexを指定している場合エラー報告
dialog "str_exchange_a_char_an_indexで無効なindexを指定しました。文字列="+rec_func_text+" 指定index="+str(rec_func_index)
end
}
send_result_text=strmid(send_result_text,0,rec_func_index)+rec_func_exchange_char+strmid(send_result_text,rec_func_index+1,strlen(send_result_text))
return(send_result_text)

#global

randomize
sdim hoge,100,10000
repeat(10000)//ランダムな"1"または"0"100バイトの文字列を10000生成
temp=""
repeat(100)
temp+=str(rnd(2))
loop
hoge.cnt=temp
loop

mes strf("%02d:%02d:%02d:%03d", gettime(4), gettime(5), gettime(6), gettime(7))

repeat(10000)//ランダムな文字列のランダムなindexを"1"か"0"に置き換える
hoge.cnt=STR_exchange_a_char_an_index(hoge.cnt,rnd(100),str(rnd(2)))
loop

mes strf("%02d:%02d:%02d:%03d", gettime(4), gettime(5), gettime(6), gettime(7))

stop

自分の環境だと62〜63ミリ秒かかってしまうのですが、
少なくとも半分、できれば1/10程度にならないかなーと思っています
その他にも、大量のデータを処理する場合の最適化について
注意するポイント等を教えていただけると大変助かります。
よろしくお願いいたします。



この記事に返信する


てれてれ

リンク

2012/1/6(Fri) 02:01:04|NO.44108

peekとpokeを使用すれば半分程度にはなると思います。



dekamega

リンク

2012/1/7(Sat) 01:56:43|NO.44147

pokeで指定のメモリindexを直接書き換える感じにしたら
たしかに半分くらいになりました。
ありがとうございます



ONION software Copyright 1997-2021(c) All rights reserved.