×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ゼロパディングするのにどの方法が速いか気になった。
検証してみた。
検証してみた。
- 検証コード
- 出力結果
■{0:000}
0001
00:00:00.0003388
■{0:D4}
0001
00:00:00.0002769
■ToString(0000)
0001
00:00:00.0003483
■ToString(D4)
0001
00:00:00.0003160
■LeftPad
0001
00:00:00.0004090
Windows7 64bitだと"{0:D4}"がはやかったけれども
WindowsXP 32bitだと"D4"がはやかった。
つまるところ"0000"と並べるよりかは"D4"と決まった書式で
書いた方が速いと。
using System; using System.Diagnostics; class p { static void Main() { int number = 1; Console.WriteLine("■{0:000}"); Instrumentation(() => { StringFormat1(number); }); Console.WriteLine("■{0:D4}"); Instrumentation(() => { StringFormat2(number); }); Console.WriteLine("■ToString(0000)"); Instrumentation(() => { ToString1(number); }); Console.WriteLine("■ToString(D4)"); Instrumentation(() => { ToString2(number); }); Console.WriteLine("■LeftPad"); Instrumentation(() => { LeftPad(number); }); } static void Instrumentation(Action action) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); action(); stopwatch.Stop(); Console.WriteLine(stopwatch.Elapsed); } static void StringFormat1(int number) { Console.WriteLine("{0:0000}", number); } static void StringFormat2(int number) { Console.WriteLine("{0:D4}", number); } static void ToString1(int number) { Console.WriteLine(number.ToString("0000")); } static void ToString2(int number) { Console.WriteLine(number.ToString("D4")); } static void LeftPad(int number) { Console.WriteLine(number.ToString().PadLeft(4, '0')); } }
- 出力結果
■{0:000}
0001
00:00:00.0003388
■{0:D4}
0001
00:00:00.0002769
■ToString(0000)
0001
00:00:00.0003483
■ToString(D4)
0001
00:00:00.0003160
■LeftPad
0001
00:00:00.0004090
Windows7 64bitだと"{0:D4}"がはやかったけれども
WindowsXP 32bitだと"D4"がはやかった。
つまるところ"0000"と並べるよりかは"D4"と決まった書式で
書いた方が速いと。
PR
この記事にコメントする