假设您要输出或连接字符串。您喜欢以下哪种风格?
var p = new { FirstName = "Bill", LastName = "Gates" };
Console.WriteLine("{0} {1}", p.FirstName, p.LastName);
Console.WriteLine(p.FirstName + " " + p.LastName);
您是使用格式还是只连接字符串?什么是你最喜欢的?其中一种会伤害您的眼睛吗?
您有任何理性的论据来使用一个而不是另一个吗?
我会去第二个。
试试这个代码。
这是您代码的略微修改版本。 1.我删除了Console.WriteLine,因为它可能比我要测量的速度慢几个数量级。 2.我在循环之前启动秒表,然后在循环之后立即停止它,这样,如果函数需要26.4个滴答来执行,我就不会失去精度。 3.将结果除以一些迭代的方法是错误的。查看如果您有1000毫秒和100毫秒,将会发生什么。在这两种情况下,除以1000000都将得到0 ms。
Stopwatch s = new Stopwatch(); var p = new { FirstName = "Bill", LastName = "Gates" }; int n = 1000000; long fElapsedMilliseconds = 0, fElapsedTicks = 0, cElapsedMilliseconds = 0, cElapsedTicks = 0; string result; s.Start(); for (var i = 0; i < n; i++) result = (p.FirstName + " " + p.LastName); s.Stop(); cElapsedMilliseconds = s.ElapsedMilliseconds; cElapsedTicks = s.ElapsedTicks; s.Reset(); s.Start(); for (var i = 0; i < n; i++) result = string.Format("{0} {1}", p.FirstName, p.LastName); s.Stop(); fElapsedMilliseconds = s.ElapsedMilliseconds; fElapsedTicks = s.ElapsedTicks; s.Reset(); Console.Clear(); Console.WriteLine(n.ToString()+" x result = string.Format(\"{0} {1}\", p.FirstName, p.LastName); took: " + (fElapsedMilliseconds) + "ms - " + (fElapsedTicks) + " ticks"); Console.WriteLine(n.ToString() + " x result = (p.FirstName + \" \" + p.LastName); took: " + (cElapsedMilliseconds) + "ms - " + (cElapsedTicks) + " ticks"); Thread.Sleep(4000);
这些是我的结果:
1000000 x结果= string.Format(“ {0} {1}”,p.FirstName,p.LastName); 耗时:618毫秒-2213706滴答声 1000000 x结果=(p.FirstName +“” + p.LastName); 耗时:166毫秒-595610滴答