Was doing some benchmarking with IsNumeric today and compared it to the following function:
Private Function IsNumeric(ByVal str As String) As Boolean If String.IsNullOrEmpty(Str) Then Return False Dim c As Char For i As Integer = 0 To Str.Length - 1 c = Str(i) If Not Char.IsNumber(c) Then Return False Next Return True End Function
I was pretty surprised with the result. With a numeric value this one was about 8-10 times faster then regular IsNumeric(), and with an empty or non-numeric value it was 1000-1500 times faster.
What is taking IsNumeric so long? Is there something else going on under the hood that I should consider before replacing it with the function above? I use IsNumeric in about 50 different places all over my site, mostly for validation of forms and query strings.
Where is your check for locale-specific delimiters and decimal places? Negation? Exponential notation?
You see, your function is only a tiny subset of what numeric strings can be.
You’re missing all of these.