Всем привет, это моя первая статья, написат её меня побудило то, что когда я писал 1 софт из-за того что я использовал плохую
функцию сравнения строк он работал очень долго, сейчас я хочу замерить скорось работы таких функций как: lstrcmpW, wcsicmp , StrStrW
и понять какая из них более приспособленна к частым вызовам.
Тестирование будем проводить на таком коде:
1. lstrcmpW
Первый опыт: 8.969000 сек
Второй опыт: 7.407000 сек
Третий опыт: 7.656000 сек
2. wcsicmp
Первый опыт: 0.844000 сек
Второй опыт: 0.891000 сек
Третий опыт: 0.875000 сек
2. StrStrW
Первый опыт: 9.141000 сек
Второй опыт: 7.859000 сек
Третий опыт: 7.797000 сек
Как можно понять из результатов выше, самая быстрая функция это wcsicmp, ну и бонусом я напишу свою функцию для сравнения и посмотрим на её
скорость.
При запуске показывает 0.453000 секунд :smile23:
функцию сравнения строк он работал очень долго, сейчас я хочу замерить скорось работы таких функций как: lstrcmpW, wcsicmp , StrStrW
и понять какая из них более приспособленна к частым вызовам.
Тестирование будем проводить на таком коде:
C++:
int main(int argc, char *argv[]) {
WCHAR* p1 = (WCHAR*)L"abcdabcdabcdabcd";
WCHAR* p2 = (WCHAR*)L"abcdabcdabcdabcd";
long double before = GetTickCount();
for (int i = 0; i < 10000000; i++) {
/*compare*/(p1, p2);
}
long double after = GetTickCount();
long double seconds = (after - before) / 1000;
printf("\n\n\nSeconds: %lf", seconds);
getchar();
return -1;
}
1. lstrcmpW
Первый опыт: 8.969000 сек
Второй опыт: 7.407000 сек
Третий опыт: 7.656000 сек
2. wcsicmp
Первый опыт: 0.844000 сек
Второй опыт: 0.891000 сек
Третий опыт: 0.875000 сек
2. StrStrW
Первый опыт: 9.141000 сек
Второй опыт: 7.859000 сек
Третий опыт: 7.797000 сек
Как можно понять из результатов выше, самая быстрая функция это wcsicmp, ну и бонусом я напишу свою функцию для сравнения и посмотрим на её
скорость.
C++:
int wcmp(wchar_t* p1, wchar_t* p2) {
if (p1 && p2) {
do {
if (*p1 != *p2) return 1;
p1++; p2++;
} while (*p1 && *p2);
if (*p1 == L'\0' && *p2 == L'\0') return 0;
}
return 1;
}
При запуске показывает 0.453000 секунд :smile23:
Последнее редактирование: