> note系の命令も、終了時にセーブしたり起動時にロードするなど、
> ループ処理内に置かなければ、重さの問題はないと思いますし、
それをやるときに遅いという話でして…(notegetを100000回とか。
以前beta-BBSでも出た)
> strmid と peek で文字列取り出しの比較をしたら
> strmid 10割とすると、
> peek 6、7割くらいの処理速度でした。(合ってるかな多分)
バッファサイズに比例する遅さだと書いたわけですが、どのように
比較されたのでしょうか?
sdim a,100001
repeat 10000
a+="abcdefghij"
loop
mes "start"
start_time=((gettime(4)*60+gettime(5))*60+gettime(6))*1000+gettime(7)
repeat 100000
sdim b,64
poke b,0,peek(a,0)
;memcpy b,a,1,0,0
loop
total_time=((gettime(4)*60+gettime(5))*60+gettime(6))*1000+gettime(7)-start_time
if total_time<0 : total_time+=86400000
mes strf("%.3f",1.*total_time/1000)
start_time=((gettime(4)*60+gettime(5))*60+gettime(6))*1000+gettime(7)
repeat 100000
b=strmid(a,0,1)
loop
total_time=((gettime(4)*60+gettime(5))*60+gettime(6))*1000+gettime(7)-start_time
if total_time<0 : total_time+=86400000
mes strf("%.3f",1.*total_time/1000)
私の環境ですと、peek・pokeやmemcpyで0.1秒程度、strmidだと16秒以上かかります。
(ver3.1β9までならstrmidも0.1秒程度)
文字列処理のためにループを回すことはよくあることですから、初心者の方であろうと
なかろうと、状況による使い分けが必要になったということだと思います。