필자는 3 열로 오름차순으로 정렬하는 DataTable이 있습니다. 까다로운 부분은 열에 숫자 값과 숫자가 아닌 값이 포함될 수 있다는 것입니다. 그렇기 때문에 우리는이 필드를 캐스팅 할 수 있는지 확인합니다. 그렇다면 숫자 비교를 수행하고 그렇지 않으면 문자열 비교를 수행합니다.Visual Studio 2012 사용자 지정 CompareTo 메서드가 느려질 때 디버깅
이것은 컴파일 된 버전에서 매우 잘 작동하지만 Visual Studio 2012에서는 극히 느리게 진행됩니다 ... 디버깅 모드에서 5 분 이상 걸리는 방식과 컴파일 된 모드에서 1 초 미만의 시간이 소요됩니다.
모든 중단 점을 삭제했지만 코드의이 부분 만 디버깅 모드에서 느리게 진행됩니다.
비교 코드 :
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
예 알아요,하지만 정수라고 확신합니다. 이 시스템은 문자열로만 빌드되었지만 몇 년 후이 기능을 추가해야했습니다. Show Integer.TryParse가 더 빠르면 IsNumeric이됩니까? –