Cri*_*scu 2 .net string formatting performance
.NET提供了四个非常相似的版本String.Format(...)(不包括带IFormatProvider参数的版本):
Format(String, Object)
使用指定对象的字符串表示形式替换指定字符串中的一个或多个格式项.
Format(String, Object, Object)
使用两个指定对象的字符串表示替换指定字符串中的格式项.
Format(String, Object, Object, Object)
使用三个指定对象的字符串表示替换指定字符串中的格式项.
Format(String, Object[])
使用指定数组中相应对象的字符串表示形式替换指定字符串中的格式项.
为什么不只有一个有(params) object[]争论的人呢?具有固定数量参数(1,2和3)的单独方法是否有性能提升?
据推测,大多数对现实世界中string.Format的调用都有1-3个参数.
它可能是早期实现.NET Framework的遗留物; 如果你看看格式(字符串,对象),格式(字符串,对象,对象)等方法的实现,你会看到它们都调用格式(IFormatProvider,string,object []).因此,绝对没有任何性能优势(如果您的构建在调试模式下运行,调用对象重载的效率更低 - 而不是您将能够测量它).
我能想到的唯一技术原因是这些重载对于不支持params参数的语言很有用.在这种情况下,程序员仍然可以调用String.Format("Hello {0}","world"),而不是强制他们创建临时数组(这是params参数建议编译器执行的操作).这也解释了为什么只有3个对象重载:这些覆盖了所有String.Format调用的99%.
*)使用Reflector或过时的Rotor代码库.
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |