【Visual Basic】インクリメントする3つの方法

※本サイトはアフィリエイト広告を利用しています。
アイキャッチIT技術
この記事は約6分で読めます。
スポンサーリンク

Visual Basic とは、プログラミング言語の1つで、Microsoftが開発している言語です。

よくVBと省略されて呼ばれたり、書かれたりしています。Visual Studioに組み込まれており、Windowsのアプリケーションを作るのに、利用することができます。

うおな
うおな

先日、仕事のとあるプロジェクトで、Visual Basic を使って、開発をする機会がありました。

しかし、私は、Visual Basic を触ったことが無かったので、インクリメントをする方法すら知りませんでした

そこで、今回はインクリメントをする方法を3種類、ご紹介したいと思います。

そもそも、インクリメントとは

インクリメントとは、変数の値を1増やすことです。

とても、簡単なことですが、プログラミングでは1を増やすということを、結構使います。

そこで、特別にインクリメントという名前が付けられています。

うおな
うおな

for文などで、ループさせる時のカウントに使ったり、

処理を行なった数を数えるカウントに使ったり、

とにかく、何かを数える時によく使います。

逆に、変数の値を1減らすことを、デクリメントといいます

++ をつけても、インクリメントできなかった

インクリメントは、プログラミングをしていて、よく使うものなので、PHPなどでは、次のようなやり方でインクリメントすることができます。

$num++;
うおな
うおな

PHPでは、変数の前か後ろに、プラス記号を2つ(++)つけることで、インクリメントさせることができます。

しかし、VIsual Basic ではこのやり方ではインクリメントができないので、エラーになってしまいます。

そこで、インクリメントする方法を、調べたところ、大まかに分けて3つの方法があることが分かりました。

それらの方法を、順番にご紹介します。

うおな
うおな

先日の、Visual Basic を使ったプロジェクトは、性能改善が大きな目標でした。

そこで、3つの方法のうち、どの方法が最も早く処理が終わるのかも調べてみました。

インクリメントをする方法

インクリメントする

私が、調べたときは、次の方法がインクリメントとして、紹介されていました。

Dim num As Decimal = 0

num = num + 1

序盤で、説明した通り、インクリメントとは変数の値を1増やすことです。

つまり、そのことを愚直にやっているだけです。

うおな
うおな

PHPのように、「++」と書くだけでは、インクリメントはできません。

上の例のように、わざわざ式を書いて1を足してあげる必要があります。

代入演算子をつかう

2つ目の方法は、代入演算子を使う方法です。

Dim num As Decimal = 0

num += 1

1つ目に紹介した方法を短縮した書き方です。こちらの書き方の方が、スッキリ見えるかもしれません(誤差の範囲だとは思いますが…)。

正直、「num = num + 1」のやり方と、対して違わないと思います。

ただ、調べていた時にこのやり方についてあるサイトで、

これは、代入演算子だからインクリメントではない

というコメントがついていました。

しかし、このやり方でも、確かにインクリメントはできます。

うおな
うおな

私には、これがインクリメントではないという理由がよく分かりません。

そこで、処理速度を計測して、先ほどの方法と違いがあるのかを、

確かめてみたいと思います。

Decimal.Incrementメソッドを使う

Visual Basicの、Decimal型には、変数の値を1増やすメソッド(関数)が、用意されています

うおな
うおな

メソッドを用意するなら、++でインクリメントできるようにしてほしいと、思ったのは私だけではないはず。。。

使い方は、簡単!

Dim num As Decimal = 0

Decimal.op_Increment(num)

このように、「Decimal.op_Increment()」の引数に、Decimal型の変数を渡して上げるだけです。

このようにすると、引数として渡された変数の値を1増やして、返してくれます

うおな
うおな

この方法には、1つの注意点があります。

このメソッドは、変数の値を1増やした値を返してくれるだけで

変数に代入はしてくれないということです

上記の例だと、numの値を1増やしただけになっています。

ループや処理のカウンターとして、Decimal.Incrementメソッドを使いたい場合は、次の様にする必要があります。

Dim num As Decimal = 0

num = Decimal.op_Increment(num)
うおな
うおな

これまでに紹介してきた方法と同じように、自分で代入する部分を書いてあげる必要があります。

タイピングしなければならない文字数的に、この方法が一番面倒くさいかもしれません。

Decimal.op_Increment()は、代入はしません。

3つの方法の速度の違い

冒頭で述べたように、Visual Basicで開発を行なうきっかけになったプロジェクトでは、アプリケーションの処理速度の改善が、大きな目標でした。

そこで、今回紹介した3つの方法のうち、処理速度が最も早いものはどれなのか調べてみました。

計測方法

Visual Studio で、起動すると、インクリメントを行ないながら、ループを1万回行うアプリケーションを作りました。

ループを始める直前と、ループが終わった直後の時刻を、ログデータとして、テキストファイルに書き込ませました。

直後の時刻から直前の時刻を引いた時間を、処理にかかった時間とします。

その計測を3つの方法で、各10回行い、平均値を出して、比較します。

うおな
うおな

インクリメントする以外の部分は、全て同じ内容のコードです。

選ばれたのは…

ループ1万回にかかった時間が短いランキング
  1. インクリメントする方法(num = num + 1)
  2. 代入演算子を使う方法(num += 1)
  3. Decimal型のIncrementメソッドを使う(num = Decimal.op_Increment())

インクリメントする方法は、平均0.039秒

代入演算子を使う方法は、平均0.045秒

Decimal型のIncrementメソッドを使う方法は、平均0.054秒

でした。

うおな
うおな

正直、どの方法を使っても大きな差は生まれないみたいです。

ただやはり、「num = num + 1」のようなシンプルな形の方法の方が、コンピュータ的には、素早く演算できるのかなと思いました。

処理速度が最も早いということに加えて、コードの読みやすさという観点からも、

「num = num + 1」のようなやり方で記述するのが、最適のように思います。

タイトルとURLをコピーしました