Re[4]: string.StartsWith очень-очень медленная. С чего вдруг
От: Kore Sar  
Дата: 10.12.08 13:22
Оценка:
Здравствуйте, Аноним, Вы писали:

KS>>Сделал так, чтобы половина результатов проверяли все символы.

KS>>
KS>>                myStrings[i] = rnd.Next(1000000).ToString("{0:D6}"); // 6 digits
KS>>                patterns[i] = rnd.Next(2) == 0 ? rnd.Next(1000).ToString() : myStrings[i].Substring(3);
KS>>



KS>>Результат еще хужа для фреймворка:

KS>>

KS>>U.StartWith: 00:00:00.0330000
KS>>String.StartsWith: 00:00:00.0490000


KS>>Так что врядли вы правы.


А>На самом деле ничего не изменилось )

А>наверно имелось ввиду ... : myStrings[i].Substring(0,3);

Точно. Спасибо. Исправил на Substring(0, 3).
Терерь результаты вот такие (Используя StringComparison.Ordinal конечно).

U.StartWith: 00:00:00.041
String.StartsWith: 00:00:00.052



А>прибавили они почти одинаково

А>т.е. как мне кажется составляющая вызова и маршалинга параметров остается доминирующей

Скорей всего оно так и есть. Можно выдать даже универсальный совет всем.


ИСПОЛЬЗУЙТЕ ЭТО ВСЕГДА!
public static class MyExtentionMethods
{
    public static bool AsciiStartsWith(this string str, string pattern)
    {
            if (pattern.Length > number.Length) return false;
            bool match = true;
            for (int digitIndex = 0; digitIndex < pattern.Length && match; digitIndex++)
            {
                match = match && number[digitIndex].Equals(pattern[digitIndex]);
            }
            return match;
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.