Ответ 1
Не настоящий ответ, но StartsWith()
- это тест на равенство, и я думаю, что это ошибка документации, но мне было любопытно узнать результаты, поэтому я сделал banchmark, используя следующий код:
class Program {
static void Main( string[ ] args ) {
Stopwatch sw = Stopwatch.StartNew( );
for ( int i = 0; i < 1000000000; i++ ) //1 billion times
IsFileURI1( "File:\\ThisIsATest" );
sw.Stop( );
Console.WriteLine( "String.StartsWith(): " + sw.ElapsedMilliseconds.ToString( ) );
sw.Restart( );
for ( int i = 0; i < 1000000000; i++ ) //1 billion times
IsFileURI2( "File:\\ThisIsATest" );
sw.Stop( );
Console.WriteLine( "String.Equals(): " + sw.ElapsedMilliseconds.ToString( ) );
}
public static bool IsFileURI1( string path ) {
return path.StartsWith( "FILE:", StringComparison.OrdinalIgnoreCase );
}
public static bool IsFileURI2( string path ) {
if ( path.Length < 5 ) return false;
return String.Equals( path.Substring( 0, 5 ), "FILE:", StringComparison.OrdinalIgnoreCase );
}
}
Результаты: (миллисекунды):
String.StartsWith(): 90102
String.Equals(): 73113
Таким образом, с точки зрения производительности второе решение лучше и примерно на на 20% быстрее.