×
[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
この記事にコメントする