Я создал простую функцию для преобразования любой строчной буквы az в верхний регистр, проблема может не быть проблемой, но каждый тест возвращает 0. Если я добавлю систему («пауза»), я могу видеть новое значение, указывающее продолжительность паузы.Тестирование Функция для скорости в CPP
Есть ли более точный способ проверить скорость, или это действительно правильно? Я хотел бы сравнить его с другими функциями, чтобы узнать, преобразует ли он быстрее, чем стандартные функции.
char* ToUppercase(char* Input)
{
int Len = Length(Input);
for (int i = 0; i < Len; i++)
{
short keycode = static_cast<short>(Input[i]);
if (keycode >= 97 && keycode <= 122)
Input[i] -= 32;
}
return Input;
}
Текущий таймер использовать для теста (созданный кем-то другим)
template<typename TimeT = std::chrono::milliseconds>
struct measure
{
template<typename F, typename ...Args>
static typename TimeT::rep execution(F func, Args&&... args)
{
auto start = std::chrono::system_clock::now();
func(std::forward<Args>(args)...);
auto duration = std::chrono::duration_cast< TimeT>
(std::chrono::system_clock::now() - start);
return duration.count();
}
};
Для вызова я использую:
void Debug()
{
char Buffer[10000] = "aaaa /..../ aaaa";
MyStringControl::ToUppercase(Buffer);
}
int main()
{
std::cout << measure<std::chrono::nanoseconds>::execution(Debug);
}
Вы смотрели на 'станд :: хроно :: high_resolution_clock'? – sfjac
У меня есть и все еще вернулось 0. Я начал задаваться вопросом, может ли скорость быть быстрой (четырехъядерный процессор i7 cpu), и поэтому я использовал это: start high_res_clock для (int i = 0; i <1000; i ++) MyStringControl :: ToUppercase (буфер); cout << end high_res_clock Выполнение этого Я получил результат 17008 – TheStart101
Имеет ли мой код ниже 0 в вашей системе? Я тоже на быстром ядре i7 (3,5 ГГц) - все равно не должен быть 0. :) (Я только что отредактировал, чтобы иметь время выпуска вместо Debug, а у меня все еще нет нуля.) – sfjac