VBA 繰り返しの「For~Next」と「Do~Loop」どちらが早いのか?



The following two tabs change content below.

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうも、takaです(^^♪

3月も今日でおしまいですね(;^ω^)

日々の速さに衝撃を受けながら日々を過ごしています(笑)

さて、話はそれましたが、皆さんは「繰り返し処理」、一体どれが一番早いの?と思ったことはありませんか?

繰り返し処理には大きく分けて

  1. For~Next
  2. Do~Loop
  3. For~Each

の3つがあり、それぞれ使い方に対して特徴があるので、個人的には早さよりは使う場面で使い分けをしていてあまり気にしていなかったのですが、ふとこの疑問に行き着き実際に試してみることにしました(笑)

「For~Next」と「Do~Loop」どちらが早いのかテストしてみた

という訳で、「For~Next」と「Do~Loop」、どちらが早いのかテストしてみました(^^♪

「あれ?For~Eachは?」と思われたかもしれませんが、昔に途中まで作成していたコードがありまして、今回はそれを流用した形でFor~Eachを使用する作りになっていなかったんです(笑)

まぁ、言ってしまうと同じ条件の繰り返し処理なら「For~Each」が一番早いと思います(笑)

テスト条件/テスト内容

さて、今回のtestは下記の条件で実施しております(^^♪

パーツ名使用パーツ
OSWindows10
CPUCore™ i3-7100
メモリ8GB
ExcelVerExcel2013

テスト内容は「For~Next」・「Do~Loop」それぞれで1億回足し算を繰り返しを1セットとして、その計算を10セット繰り返す処理を実行します。

つまり20億回の足し算を繰り返して結果を求めます(^^)/

テスト結果/テスト用コード

さて気になる結果ですがこのような結果となりました(^^)/

計算回数For~NextDo~Loop
1回目0.625秒0.984秒
2回目0.61秒0.984秒
3回目0.625秒0.984秒
4回目0.61秒1秒
5回目0.625秒1.109秒
6回目0.609秒0.985秒
7回目0.625秒0.984秒
8回目0.625秒1.016秒
9回目0.64秒0.985秒
10回目0.609秒0.985秒

という訳で、10回のテストの結果、For~Nextのほうが若干早いという事がわかりました!

今回のテストはあくまで加算(足し算)のみです。使用条件や処理内容で内容が変わることもございます。

今回使用したコードをUP表示しておきますので気になる方はご使用ください(^^♪

 

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Twitterフォロー

 

Twitterもやってます(^^♪Excelについてはあまり触れませんがブログの更新のお知らせはツイートしています(^^♪

Twitterフォロー

 



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です