Why_Speed_Slow_When_Loop_Increase
最終更新日: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