或objThatIsString.ToString()正如在aswers中指出的那样..更快更聪明..
Mar*_*arc 18
@thijs:这是一个快速测试:
public class ToStringTest
{
private object mString = "hello world!";
Stopwatch sw = new Stopwatch();
private List<long> ConvertToStringTimes = new List<long>();
private List<long> ToStringTimes = new List<long>();
private List<long> CastToStringTimes = new List<long>();
public ToStringTest()
{
for (int i = 0; i < 100000; i++)
{
sw.Start();
ConvertToString();
sw.Stop();
ConvertToStringTimes.Add(sw.ElapsedTicks);
sw.Reset();
sw.Start();
ToString();
sw.Stop();
ToStringTimes.Add(sw.ElapsedTicks);
sw.Reset();
sw.Start();
CastToString();
sw.Stop();
CastToStringTimes.Add(sw.ElapsedTicks);
sw.Reset();
}
Console.WriteLine("Average elapsed ticks after converting {0} strings",ConvertToStringTimes.Count);
Console.WriteLine("ConvertToString: {0} ticks", ConvertToStringTimes.Average() );
Console.WriteLine("ToString: {0} ticks", ToStringTimes.Average());
Console.WriteLine("CastToString: {0} ticks", CastToStringTimes.Average());
}
private string ConvertToString()
{
return Convert.ToString(mString);
}
public override string ToString()
{
return mString.ToString();
}
public string CastToString()
{
return (string) mString;
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
转换100000个字符串后平均经过的刻度
ConvertToString:611.97372 ticks
ToString:586.51461蜱虫
CastToString:582.25266 ticks
Mar*_*ell 14
除了运行时类型检查之外,直接强制转换不需要进行任何检查 - 我希望转换更快.
你可能也想考虑一下objThatIsString.ToString(); 因为(string这)只是return this;,它应该很快 - 当然比快Convert.ToString.然后竞争在运行时类型检查和虚拟呼叫之间; 实际上,两者都非常非常快.
演员阵容更快.
该Convert.ToString最终将做一些开销后获得的铸造.它实际上是以尝试将其强制转换为其形式IConvertible,然后ToString在其上调用虚方法.所以,这是实际投射的虚拟调用String.
| 归档时间: |
|
| 查看次数: |
4120 次 |
| 最近记录: |