那么,性能更好的是什么?
var wholeStr = "Hello, I am\n a Cat.\n You like cats?;
var str1 = wholeStr.Split('\n')[0];
var str2 = wholeStr.Split('\n')[1];
var str3 = wholeStr.Split('\n')[2];
或
var wholeStr = "Hello, I am\n a Cat.\n You like cats?;
var strArray = wholeStr.Split('\n');
var str1 = strArray [0];
var str2 = strArray [1];
var str3 = strArray [2];
我真的不确定,因此问题。
答案 0 :(得分:3)
你甚至可以在没有测试的情况下知道答案,因为重新调用一个方法在逻辑上是“慢”#34;比调用一次并使用结果(这是正确的用法)。
无论如何,我写了一些代码来给你一个技术答案。
static void PerformAction(string name, int n, Action action)
{
// Warm up
action();
List<double> times = new List<double>();
for (int i = 0; i < n; i++)
{
var sw = Stopwatch.StartNew();
action();
times.Add(sw.Elapsed.TotalMilliseconds);
}
Console.WriteLine("{0}: MIN: {1}, AVG: {2}, MAX: {3}", name, times.Min(), times.Average(), times.Max());
}
测试:
var wholeStr = "Hello, I am\n a Cat.\n You like cats?";
PerformAction("Multiple splits", 10000, () =>
{
var str1 = wholeStr.Split('\n')[0];
var str2 = wholeStr.Split('\n')[1];
var str3 = wholeStr.Split('\n')[2];
});
PerformAction("Single split", 10000, () =>
{
var strArray = wholeStr.Split('\n');
var str1 = strArray[0];
var str2 = strArray[1];
var str3 = strArray[2];
});
结果:
Multiple splits: MIN: 0, AVG: 0,000537730000000083, MAX: 0,3103
Single split: MIN: 0, AVG: 0,000163129999999993, MAX: 0,4506
由于AVG结果,您可以看到差异。