Время выполнения strnlen (VS2005)
От: BoresExpress Россия  
Дата: 03.11.06 17:19
Оценка:
Сделал простенький тест:

LPCSTR pTest1 = "http://www.boressoft.ru:80/cgi-bin/text.cgi?test=1&text=2";
LPCSTR pTest2 = "http://www.boressoft.ru:80/cgi-bin/text.cgi?test=1&text=2";

for (USHORT i = 0; i < 65500; i++)
{
    strnlen(pTest1, _MAX_PATH);
    strcmp(pTest1, pTest2);
    strlen(pTest1);
}

return 0;


И замерил время выполнения (edge time) при помощи Intel VTune 8.0:
strlen — 3 306
strcmp — 7 443
strnlen — 16 292

Кто-нибудь может мне объяснить, что такого там делает strnlen, что по времени выполнения она проигрывает даже strcmp, которой надо не просто бежать по строке, а ещё и сравнивать с другой строкой?

Дорогая какая-то буква n получается...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.