下記コードをMono 4.2.1 (OS X 10.11.3)で試して見ましたが、!=
の方が3倍ぐらい遅いです。また、!=
もString.Inequality 演算子 (String, String)というメソッドなので、メソッド呼び出しになると思われます。また、nullの場合に結果が異なります。
と言うことで、良い事なんて無いようです。下記コードをレビュアーに叩きつけてやって下さい。
※ Visual C#ではは未確認なので、ご注意を。
C#
1using System;
2using System.Diagnostics;
3
4class Yobidashi
5{
6 [STAThread]
7 public static void Main(string[] args)
8 {
9 const long times = 1000000000;
10 String text = "a";
11 Console.WriteLine("TimeMethod: " + TimeMethod(times, text));
12 Console.WriteLine("TimeEqual: " + TimeEqual(times, text));
13 text = "";
14 Console.WriteLine("TimeMethod: " + TimeMethod(times, text));
15 Console.WriteLine("TimeEqual: " + TimeEqual(times, text));
16 text = null;
17 Console.WriteLine("TimeMethod: " + TimeMethod(times, text));
18 Console.WriteLine("TimeEqual: " + TimeEqual(times, text));
19 }
20 public static TimeSpan TimeMethod(long times, String text) {
21 Stopwatch sw = new Stopwatch();
22 long count = 0;
23 sw.Start();
24 for (long i = 0; i < times; i++) {
25 if (!String.IsNullOrEmpty(text)) {
26 count++;
27 }
28 }
29 sw.Stop();
30 Console.WriteLine(count == times ? "ok" : "ng");
31 return sw.Elapsed;
32 }
33 public static TimeSpan TimeEqual(long times, String text) {
34 Stopwatch sw = new Stopwatch();
35 long count = 0;
36 sw.Start();
37 for (long i = 0; i < times; i++) {
38 if (text != "") {
39 count++;
40 }
41 }
42 sw.Stop();
43 Console.WriteLine(count == times ? "ok" : "ng");
44 return sw.Elapsed;
45 }
46}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/29 01:20 編集
2016/02/29 04:22
2016/02/29 14:11
2016/03/16 07:02