演算子とStringBuilderで文字の連結の速度の違いを測定してみました
前回の続きです。ご存じない方は下記からご覧ください。
System.nanoTime()とSystem.nanoTime()
JAVAで速度計測するには代表する2つのメソッドがあるようです。それがSystem.currentTimeMillis()
メソッドとSystem.nanoTime()
メソッドです。それぞれの違いは数値の精度にあるようなので今回はSystem.nanoTime()
を利用します。System.nanoTime()
の2回目の取得時間から1回目の取得時間を引いて1000
で割ったものがミリ秒になるので、それぞれを変数start
とend
に代入して(end - start) / 1000
としました。
最初は簡単な文字連結で試したのですが、あまりにも早すぎたのでfor
で2000回連結してみました。
今日は時間がないので結果を簡単に書きます。
プラス演算子で文字連結したOperator.java
を5回計測した平均値は14110226
ミリ秒でした。
StringBuilder
で文字連結したStringBuilder.java
を5回計測した平均値は14139477
ミリ秒でした。
なぜかStringBuilder
のほうが遅いという結果に終わりました。
疑問
for
文での文字の連結の書き方が間違ってる?System.nanoTime()
の使い方が間違ってる?- 2000回程度では両者に差は出ない?
あとがき
モヤモヤが残ったのでまた試したいです。
初めてのコマンドプロンプトからのHello World!
北海道で温泉と魚介を堪能してリフレッシュしました!前回はJDKが期待通りに動かずにエラーが出てしまい途方に暮れた結果Windowsの再インストールを視野に入れたところで終わりました。というわけで続きです。
Windowsの再インストール
友達に聞いたところ「HDDのフォーマットとインストール自体は30分くらいで終わるけどUpdateに3~4時間はかかるよ」とアドバイスをもらったのでフォーマットとインストールは朝の支度のあいだに終わらせてWindows Updateを開始させてから仕事に行きました。帰宅後、無事に100件以上のUpdateが終わっていて一安心です。再起動させて追加でいくつかUpdateを終わらせました。そのあとはグラフィックドライバ、サウンドドライバと指示通りにインストールを済ませ、ひとまず終了です。
JDKのインストール
初心者はJDKやらJREやらに惑わされますが、結論から言うとJDKをインストールすればJREは必要ありません。JDKはJAVAの開発環境を提供してくれます。その中には実行環境も含まれているのでJREも同梱されているというわけです。JAVAでコードを書くならばJDKのインストールだけでいいというのは勉強になりました。環境変数のPATHをJDKの実行ファイルのフォルダを指定したら早速テキストファイルでJAVAを書きます。
夢のHello World!
おなじみのHello World!
の表示です。ファイルをCドライブ直下に作成したWorkフォルダに置いてテストをしました。コマンドプロンプトからjavac Main.java
を実行するとコンパイルが成功してWorkフォルダにあるclassファイルを確認しました。嫌な記憶が蘇りますが次にjava Main
と実行します。そして……Hello World!
と表示されました!成功です!今までclassファイルの存在も知らずにEclipseに任せていたんですが、ここにきてやっとコンパイルしてからファイルを実行するという実感を得ました。
あとがき
明日はjavapや速度実測をやってみようと思います。