这是两个测试,第一个使用:
DateTime.TryParse(dateToParse,out date)
var dateToParse = "2012-09-17";
var startNew = Stopwatch.StartNew();
for (int i = 0; i < 4059; i++)
{
DateTime date;
if (!DateTime.TryParse(dateToParse, out date))
continue;
}
Console.WriteLine(startNew.GetTimeString());
Run Code Online (Sandbox Code Playgroud)- >输出:19,1 ms闪电快
第二个使用:
DateTime.TryParse(dateToParse,new CultureInfo("en-US"),DateTimeStyles.AdjustToUniversal,out date)
var dateToParse = "2012-09-17";
var startNew = Stopwatch.StartNew();
for (int i = 0; i < 4059; i++)
{
DateTime date;
if (!DateTime.TryParse(dateToParse, new CultureInfo("en-US"), DateTimeStyles.AdjustToUniversal, out date))
continue;
}
Console.WriteLine(startNew.GetTimeString());
Run Code Online (Sandbox Code Playgroud)- >输出:11,6秒真的很慢!!!
两个问题.
1 - 为什么美国文化中的转换如此缓慢
2 - 我可以使用什么替代解决方案在datetime中使用US-Culture转换字符串
一点点优化
var dateToParse = "2012-09-17";
CultureInfo ci = new CultureInfo("en-US");
var startNew = Stopwatch.StartNew();
for (int i = 0; i < 4059; i++)
{
DateTime date;
if (!DateTime.TryParse(dateToParse, ci, DateTimeStyles.AdjustToUniversal, out date))
continue;
}
Run Code Online (Sandbox Code Playgroud)
第一个示例和第二个示例之间的区别在于新的CultureInfo.
在进入循环之前只创建一次将大大减少所需的时间.
但是,我很想知道在IDE之外编译和执行时原始代码的真实性能.JITter可能会自行进行优化.
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |