celputのいま現在の処理はパラメータをgcopyに使用できるようにしてからgcopyの処理を呼び出し
回転や拡縮指定されたらgrotateの処理を呼び出す
パラメータを内部で持ってるcelputはスクリプト側でパラメータを指定する
gcopyより速い可能性がある(自分ところで試したら1万回で0.5ms前後しか差が無いので誤差程度だが・・・)
#module
#uselib "kernel32.dll"
#func QueryPerformanceFrequency "QueryPerformanceFrequency" sptr
#func QueryPerformanceCounter "QueryPerformanceCounter" sptr
//モジュール初期化
#deffunc QueryPerformance_init
dim qpf,2
dim qpc,2
ddim qpt,1
QueryPerformanceFrequency varptr(qpf)
if stat=0 {return -1}
pf2=((4294967296.0+qpf)\4294967296.0)//符号付きintを正の数のdoubleにする
pf2=(pf2+4294967296.0*qpf(1))//64ビットintをdoubleにする
QueryPerformanceCounter varptr(qpc)
if stat=0 {return -1}
stqpc=((4294967296.0+qpc)\4294967296.0)
stqpc=(stqpc+4294967296.0*qpc(1))
return 0
//---------QueryPerformance_init実行からの時間を単位を指定して取得--------
//GetQPtime(p1)
// p1 = 何分の1秒かを指定(省略時1000)[ミリ秒なら1000]
//整数部が指定単位になる
#define global ctype GetQPtime(%1=1000) _GetQPtime(%1)
#defcfunc _GetQPtime int q
QueryPerformanceCounter varptr(qpc)
qpt=((4294967296.0+qpc)\4294967296.0)
return ((qpt+4294967296.0*qpc(1))-stqpc)/pf2*q
#global
buffer 1
QueryPerformance_init
csx=16
csy=16
a=GetQPtime()
gmode 0,csx,csy
repeat 10000
pos 0,0 //celputが自動でポジション移動してバッファ外になってしまって計測上問題でるからpos 0,0するので同条件にする
gcopy 0,0,0
loop
b=GetQPtime()
wait 10
celdiv 0,csx,csy
c=GetQPtime()
repeat 10000
pos 0,0
celput 0,0
loop
d=GetQPtime()
gsel 0
mes b-a
mes d-c