FAQ-1135 ループが増えると速度が遅くなるのはなぜですか?

最終更新日:2022/5/6

既存のシートの列数が多いとき、列の追加と指定の設定に時間がかかる場合、ループの数が増えると各ループが遅くなります。

//[Book1]1! にすでに2450x3列ある
rw=2450;
sec;
loop (tt,1,50) 
{
ncol = rw*3;

//存在しない列にアクセスするため列を追加
range dis3=[Book1]1!col($(ncol+1));  
range vel3=[Book1]1!col($(ncol+2)); 
range vel3a=[Book1]1!col($(ncol+3));

dis3[L]$=f$(tt)dis;
vel3[L]$=f$(tt)vel;
vel3a[L]$=f$(tt)vela;

//既存シートの列数が多いと属性指定に時間がかかる
dis3.type=4;
vel3.type=1;
vel3a.type=1;

rw=rw+1;
};

したがって、ループ内で上記のアクションを回避する必要があるので、ループの前に予めワークシート全体を準備します。

int nloop = 50;

//ワークシート指定
range rWa = [Book4]1!;
int oldcol = rWa.nCols;

//列追加
rWa.nCols = rWa.nCols + nloop*3;

//属性設定
coldesig desig:=X2Y rng:=%(rWa)$(oldcol+1):$(rWa.nCols);

loop (tt,1,nloop) 
{
range dis3=%(rWa)$(oldcol+3*tt-2);
range vel3=%(rWa)$(oldcol+3*tt-1);
range vel3a=%(rWa)$(oldcol+3*tt);

dis3[L]$=f$(tt)dis;
vel3[L]$=f$(tt)vel;
vel3a[L]$=f$(tt)vela;

}


キーワード:LabTalk, loop