Я никогда не могу заставить простой таймер работать независимо от того, что я пытаюсь. Как мне узнать, сколько миллисекунд потребовалось для сегмента кода для запуска без внешних библиотек?Сроки функции
Я пробовал:
time_t total = static_cast<time_t>(0.0f);
for(int i = 0; i < 10; ++i)
{
time_t start = time(0);
for(int b = 0; b < 100; ++b)
{
newMesh.IsValid();
}
time_t end = time(0);
total += (end - start);
}
time_t average = total/10;
printf("Average time of Knight IsValid check %d\n", average);
Это займет около 15 секунд и говорит, что он занял 1 миллисекунду. Я также пробовал:
std::clock_t total = static_cast<time_t>(0.0f);
for(int i = 0; i < 10; ++i)
{
std::clock_t start = std::clock();
for(int b = 0; b < 100; ++b)
{
newMesh.IsValid();
}
std::clock_t end = std::clock();
total += (end - start);
}
std::clock_t average = total/10;
printf("Average time of Knight IsValid check %d\n", average);
Но мне сказали, что это часы, которые не подходят для профилирования?
Существует очень простой пример на [cppreference.com] (http://en.cppreference.com/w/cpp/chrono/steady_clock/now), что я думаю, будет делать то, что вам нужно. – 5gon12eder
Кажется, у вас нет хроно? Я использую Visual Studio 2012. – marsh
Это функция C++ 11. Возможно, вам понадобится добавить специальный флаг компилятора, такой как '-std = C++ 11' для GCC или обновить ваш компилятор. Это будет стоить того. – 5gon12eder