Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

その変数、Variant 型では?

1,260 views

Published on

LotusScript で作成するエージェントの処理速度は、使う変数の型をきちんと指定するだけで驚くほど高速になる場合があります。
型の宣言を簡易にする方法についても触れてます。

Published in: Technology
  • You have to choose carefully. ⇒ www.HelpWriting.net ⇐ offers a professional writing service. I highly recommend them. The papers are delivered on time and customers are their first priority. This is their website: ⇒ www.HelpWriting.net ⇐
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

その変数、Variant 型では?

  1. 1. LotusScript小噺 あなたのコードが高速になる Tips 中野晴幸 @harunakano harunakano.blogspot.com
  2. 2. これらのコードの大きな違いとは? Dim i As Long i = 0 For i = 1 To 100000000 i = i + 1 Next Dim j As Variant j = 0 For j = 1 To 100000000 j = j + 1 Next k = 0 For k = 1 To 100000000 k = k + 1 Next
  3. 3. Dim i As Long i = 0 For i = 1 To 100000000 i = i + 1 Next Dim j As Variant j = 0 For j = 1 To 100000000 j = j + 1 Next k = 0 For k = 1 To 100000000 k = k + 1 Next 変数の型が違う 型の宣言なし = Variant
  4. 4. Dim i As Long i = 0 For i = 1 To 100000000 i = i + 1 Next Dim j As Variant j = 0 For j = 1 To 100000000 j = j + 1 Next k = 0 For k = 1 To 100000000 k = k + 1 Next バインディング 早期バインディング 遅延バインディング 遅延バインディング 型の宣言なし = Variant
  5. 5. バインディング とは  オブジェクトを変数名に割り当て るプロセス  2つのタイプ  早期バインディング[early binding]  遅延バインディング[late binding]
  6. 6. 早期バインディング  コンパイラによって設定される  型のチェックを使用し、素早く動作する
  7. 7. 遅延バインディング  遅延バインディングは実行時に設定される  柔軟だが型チェックを使用せず、ランタイムエラーが発生する可能性がある  型を Variant で宣言したり、型を宣言していない場合、遅延バインディングとな る  早期バインディングに比べ処理時間が長い
  8. 8. 処理時間の違い Dim i As Long i = 0 For i = 1 To 100000000 i = i + 1 Next 処理時間(秒) 早期 遅延 遅延 1回目 2回目 3回目 平均 Dim j As Variant j = 0 For j = 1 To 100000000 j = j + 1 Next k = 0 For k = 1 To 100000000 k = k + 1 Next
  9. 9. 処理時間の違い Dim i As Long i = 0 For i = 1 To 100000000 i = i + 1 Next 処理時間(秒) 早期 遅延 遅延 1回目 64 66 2回目 65 65 3回目 64 64 平均 64 65 Dim j As Variant j = 0 For j = 1 To 100000000 j = j + 1 Next k = 0 For k = 1 To 100000000 k = k + 1 Next
  10. 10. 処理時間の違い Dim i As Long i = 0 For i = 1 To 100000000 i = i + 1 Next 処理時間(秒) 早期 遅延 遅延 1回目 3 64 66 2回目 4 65 65 3回目 3 64 64 平均 3 64 65 Dim j As Variant j = 0 For j = 1 To 100000000 j = j + 1 Next k = 0 For k = 1 To 100000000 k = k + 1 Next
  11. 11. 処理時間の違い Dim i As Long i = 0 For i = 1 To 100000000 i = i + 1 Next 処理時間(秒) 早期 遅延 遅延 1回目 3 64 66 2回目 4 65 65 3回目 3 64 64 平均 3 64 65 Dim j As Variant j = 0 For j = 1 To 100000000 j = j + 1 Next k = 0 For k = 1 To 100000000 k = k + 1 Next 20倍以上!!
  12. 12. よくある省略の誤り Dim i, j, k As Long
  13. 13. よくある省略の誤り Dim i, j, k As Long ここ! Variant です!
  14. 14. 「接尾辞」と「Deftypeステートメント」 Dim i&, j&, k& DefLng i-k Dim i, j, k ステートメント データ型 接尾辞 DefBool Boolean 型 (なし) DefByte Byte 型 (なし) DefCur Currency 型 @ DefDbl Double 型 # DefInt Integer 型 % DefLng Long 型 & DefSng Single 型 ! DefStr String 型 $ DefVar Variant 型 (なし)
  15. 15. 明日からあなたのコードも20倍速!! になるといいね

×