Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

その変数、Variant 型では?

1.095 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

その変数、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倍速!! になるといいね

×