谁能解释如果在以下任何一种方法的任何益处:
decimal d = 12.0m;
// 1. how I'd have done it
myLabel.Text = d.ToString();
// 2. how I saw someone do it today
myLabel.Text = String.Format("{0}", d);
只是为了澄清,我不是什么查询方法做,我与明显开心,只是如果有可能是在这个具体的例子在一个性能上要优于其他。 我所知道的通过的String.Format()所提供的文化和格式化的更大的灵活性,但我始终只是“的ToString()”数值运算到自己的价值附加到一个标签,或者在一般的基于文本的属性。
对我来说,的String.Format()选项,似乎是在这里没有额外的好处更多打字,但我不知道是否有做事情的一种方式VS其他的任何其他'引擎盖下的利益。
我做了一些标杆Linqpad:
void Main()
{
int iterations = 1000000;
decimal d = 12.0m;
var text = "";
var sw = Stopwatch.StartNew();
for (int i = 0; i < iterations; i++)
{
// 1. how I'd have done it
text = d.ToString();
}
sw.Stop();
sw.ElapsedMilliseconds.Dump("ToString()");
sw = Stopwatch.StartNew();
for (int i = 0; i < iterations; i++)
{
// 2. how I saw someone do it today
text = String.Format("{0}", d);
}
sw.Stop();
sw.ElapsedMilliseconds.Dump("Format");
}
的ToString()157
格式264
toString()方法看起来始终快。
编辑:我要指出的是,我的电脑10万美元的“格式”的操作只用了2.2秒。 这看起来非常像一个微型优化,除非你在做什么是非常关键性能,或迭代 - 这倒是不担心这太多了。
字符串格式-在hood-下使用StringBuilder
这对处理字符串要快得多- 。
的ToString是一个对象的默认表示。
string.Format
可用于创建其他复杂的字符串,因为它可能需要一个params
参数集; 所以这是不是真的苹果VS苹果的问题。
ToString()
是更好的,因为Format()
需要调用ToString()
反正引擎盖下。 如果你需要指定自定义格式, Format()
提供的格式说明像对齐/填充。 否则,没有理由不使用ToString()
ToString()
适合大大优于进入自我记录代码Format()
只是更有意义。
我希望那里是调用的边际性能优势ToString()
因为它没有解析您的格式字符串。 如果你不使用的功能,哪些功能,以及它读取更漂亮Format()