読者です 読者をやめる 読者になる 読者になる

プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

文字列を追加していく時はINCの方が速い

数値を加算する時は、INCを使うよりもA=A+Bのようにふつうの代入と加算の組み合わせの方が速い、という事実が以前から知られていましたが、文字列の時はどうなのか?と思い検証してみました。

以下のようなプログラムを実行します。
f:id:eidaht:20161016194338j:plain
最初のループが代入を使う場合、後のループがINCを使う場合です。

結果は以下のようになりました。
f:id:eidaht:20161016194614j:plain
A(ループを使う方)がB(INCを使う方)の2倍程度の時間がかかっていることがわかります。

何回か実行しても、AとBの順番を入れ替えても同じような結果になるので、ほぼ間違いなく、文字列の場合はA$=A$+B$のような代入よりも、INCの方が速いようだと思われます。
(単純に2倍とは言い切れませんが、それに近い程度の大きな差があります。)

ゲームでは大量(1000回とか)の文字列の連結はほぼ使わないのでどちらでも問題ないでしょうが、文字列を扱うツール系のプログラムでは使い勝手の差が出てくる可能性がありますので気を付けておくといいかも。