DateTime.ParseExact()比DateTime.Parse()更快吗?

我想知道ParseExact是否比Parse更快。

我认为它应该是ParseExact,因为你已经给出了格式,但我也认为对文化信息的所有检查都会减慢它的速度。 微软是否在任何文件中都说两者之间的性能差异。 要使用的格式是通用的“yyyy / MM / dd”格式。

例如:

DateTime.Parse(DateText); DateTime.ParseExact(DateText, "yyyy/MM/dd", CultureInfo.InvariantCulture); 

您要求两种function不同的方法(接近但仍然不同)的速度差异。

只需选择最合适的一个。

不,几乎从未记录过库方法的性能。

但我可以告诉你一些关于这种差异的事情:

  • 它很小,
  • 它可能会在未来版本中发生变化

如果您只为TryParseExact指定一种格式,那么它将尝试。 Parse尝试所有格式,直到找到最佳匹配或找到第一个匹配。 (我不确定是哪一个。)几周前我用定制的CultureInfo做了这个。 我没有测试性能,但我确实对我的解析方法(没有定制的CultureInfo,见下文)对数据库中存储的61,880个日期进行了unit testing。 我没有注意到任何性能问题。

无论您是否指定CultureInfo,如果没有传递,则内部解析例程将使用CultureInvariant。 因此,CultureInfo不会减慢这个过程。 (由于需要额外的解析,希伯来语和其他“异国情调”日期会有一些性能点击。)从我对DateTime源代码的回顾中,字符串格式的数量决定了这些例程解析日期字符串的速度。 格式越多,速度越慢。 如果您只指定一个,则解析速度与使用...Exact方法一样快。


 Imports System.Globalization Public Class ExifDateTime Private Shared _formats() As String = New String() { _ "yyyy:MM:dd", _ "yyyy:MM:dd HH:mm:ss", _ "yyyy:MM:dd HH:mm:ss.f", _ "yyyy:MM:dd HH:mm:ss.ff", _ "yyyy:MM:dd HH:mm:ss.fff", _ "yyyy:MM:dd HH:mm:ss.fffK", _ "yyyy:MM:dd HH:mm:ss.ffffffK", _ "yyyy:MM:dd HH:mm:ssK", _ ""} Public Shared Function Parse(ByVal s As String) As Date Dim oResult As Date If TryParse(s, DateTimeStyles.None, oResult) = False Then Throw New FormatException End If Return oResult End Function Public Shared Function Parse(ByVal s As String, ByVal style As System.Globalization.DateTimeStyles) As Date Dim oResult As Date If TryParse(s, style, oResult) = False Then Throw New FormatException End If Return oResult End Function Public Shared Function TryParse(ByVal s As String, ByRef result As Date) As Boolean Return TryParse(s, DateTimeStyles.None, result) End Function Public Shared Function TryParse(ByVal s As String, ByVal style As System.Globalization.DateTimeStyles, ByRef result As Date) As Boolean Dim fResult As Boolean Dim oResultant As Date fResult = Date.TryParseExact(s, _formats, CultureInfo.InvariantCulture, style, oResultant) If fResult Then result = oResultant End If Return fResult End Function End Class