Visual Studio 2012自定义comparareto方法调试时很慢



我有一个数据表,我按3列升序排序。棘手的是,该列可以包含数值和非数值值。因此,我们看一下是否可以强制转换这个字段,如果可以,就进行数值比较,否则就进行字符串比较。

这在编译版本中工作得很好,但在Visual Studio 2012中,这非常慢…有些比较在调试模式下需要5分钟以上,在编译模式下需要不到一秒。

我删除了所有的断点,但仍然只有这部分代码在调试模式下变慢。

比较代码:

Public Function CompareValues(ByVal sThis As String, ByVal sOther As String) As Integer
    Dim bFirstNumeric As Boolean = IsNumeric(sThis)
    Dim bOtherNumeric As Boolean = IsNumeric(sOther)
    If bFirstNumeric AndAlso bOtherNumeric Then
        Return Integer.Parse(sThis).CompareTo(Integer.Parse(sOther))
    ElseIf bFirstNumeric And Not bOtherNumeric Then
        Return -1
    ElseIf Not bFirstNumeric And bOtherNumeric Then
        Return 1
    Else
        Return sThis.CompareTo(sOther)
    End If
End Function

我会像这样做IsNumeric检查,然后从这里继续。它更干净。

Dim Value1 As Object
Dim Value2 As Object
Dim V1 As Integer
Dim V2 As Integer
Public Function IsNumeric(ByVal Expression As Object) As Boolean
If IsNumeric(Value1) = True And IsNumeric(Value2) = True Then
    V1 = Integer.Parse(Value1)
    V2 = Integer.Parse(Value2)
End If
Return True
End Function

如果你需要更多的帮助,请告诉我。

最新更新