0

我如何比较.equals("").IsNullOrEmpty?我想知道两者哪个更快。我听说过使用刻度,但还不熟悉如何编码。

4

4 回答 4

1

您可以使用StopWatch该类来测量代码的执行时间。启动秒表,运行几千次迭代,停止它并查看经过的时间。对其他实现执行相同的操作。还要确保你尝试了一些边缘情况,比如比较null或空字符串,甚至是很长的字符串。只是比较"foo"十几次""并不能证明什么。

请注意,答案很可能与您的问题完全无关。你的时间最好花在改进代码的其他部分上。

于 2012-06-22T06:22:03.850 回答
1

isNullOrEmpty 可能更快,因为它是特殊用途。然而,正如其他评论过的人指出的那样,这是一个非常微不足道的优化。

于 2012-06-22T06:22:12.963 回答
1

使用StopWatch方式如下:

// Create new stopwatch
Stopwatch stopwatch = new Stopwatch();

// Begin timing
stopwatch.Start();

// Do something here

// Stop timing
stopwatch.Stop();
于 2012-06-22T06:24:10.557 回答
1

正如其他人所说,这是过早的优化,可能不值得您花时间。但是,为了回答,你可以这样做:

using System;
using System.Diagnostics;

namespace ConsoleApplication1 {   
    class Program {   
        static void Main(string[] args) {
            int COUNT = 1000000000;
            String str = "Something";

            Stopwatch sw = Stopwatch.StartNew();
            sw.Start();
            for (int i = 0; i < COUNT; i++) {
                if (str.Equals("")) {
                }
            }
            Console.WriteLine(sw.ElapsedTicks);

            sw = Stopwatch.StartNew();
            sw.Start();
            for (int i = 0; i < COUNT; i++) {
                if (String.IsNullOrEmpty(str)) {
                }
            }
            Console.WriteLine(sw.ElapsedTicks);

            Console.ReadLine();
        }
    }
}

输出是给我的:

21426768  // Equals("")
12365410  // IsNullOrEmpty() <-- faster

请不要那样做str.Equals("")String.IsNullOrEmpty(str)不会给你同样的结果。显然,第一个将引发 NullReferenceException stris null。

于 2012-06-22T07:46:02.110 回答