気になったのでメモ
「その1」はプログラムの書き方によっては受信データロストに繋がるという件
気付いた都度追記していく
その1 知らずにデータをロストしていた orz
発生頻度
20 Recv 0
100 Do
110 If Stat=10 Then
120 Stat=0
130 Print Rxd
140 Else
150 ' ここでstat=10のときがある
160 If Stat!=0 && Stat!=10 Then
210 Delay 100
999 Loop
その2 ループ方法やコメント有無の処理速度への影響
・コメント行があると遅くなる
・コメント行はコメント文字列が長いと遅くなる
・I=I+1 より I++ のインクリメントが速い
・マルチステートメントは遅くなる
・ラベル名が長いと遅くなる
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000 Step 1
140 I=I+1
150 J=J+1
160 'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec
■Step省略 効果なし 所要時間19秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140 I=I+1
150 J=J+1
160 'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec
■インクリメント 効果あり 所要時間14秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140 I++
150 J++
160 'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec
■コメント行増 逆効果あり 所要時間45秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140 I++
150 J++
160 'NOP
161 'NOP
162 'NOP
163 'NOP
164 'NOP
165 'NOP
166 'NOP
167 'NOP
168 'NOP
169 'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec
■すべてのコメント削除 効果あり 所要時間11秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140 I++
150 J++
170 Next
180 Print "20"; Datetime (Clock);".";Milisec
■コメント1件 「■インクリメント 効果あり」の再掲 所要時間15秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140 I++
150 J++
160 'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec
■コメント長増 逆効果あり 所要時間19秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140 I++
150 J++
160 'NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec
■マルチステートメント 逆効果あり 所要時間18秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140 I++:J++
160 'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec
■For Next から While Loopへ変更 逆効果あり 所要時間38秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 While (I<=100000)
140 I++:J++
160 'NOP
170 Loop
180 Print "20"; Datetime (Clock);".";Milisec
■while LoopからDO~LOOP WHILE へ変更 逆効果あり 所要時間52秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 Do
140 I++:J++
160 'NOP
170 Loop While (I<=100000)
180 Print "20"; Datetime (Clock);".";Milisec
■ForからDo If exitへ変更 逆効果あり 所要時間45秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 Do
135 If I=100000 then exit endif
140 I++:J++
160 'NOP
170 Loop
180 Print "20"; Datetime (Clock);".";Milisec