Самый быстрый способ получить приблизительную разницу во времени - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть метод, который возвращает текущее время в виде строки. Хотя этот метод вызывается миллионы раз в секунду, и поэтому я оптимизировал этот метод несколькими способами (статически распределенные буферы для строки времени и т. Д.).

Для этого приложения вполне нормально приблизить время. Например я использую разрешение 10 миллисекунд. В течение этого времени возвращается та же самая строка времени.

Хотя при профилировании кода вызов clock () отнимает огромное количество времени.

Какие другие и более быстрые варианты мне нужно, чтобы приблизить разницу во времени с разрешением в миллисекундах?

1 Ответ

0 голосов
/ 29 апреля 2018

Чтобы ответить на мой собственный вопрос: решение состояло в том, чтобы ограничить вызовы clock () или любой временной функцией в этом отношении. Общее время выполнения всего тестового примера теперь в 22 раза быстрее.

Я думаю, что смогу дать общий совет после подробного профилирования: если вы можете жить с меньшим временным разрешением и вам действительно нужно оптимизировать свой код для скорости, измените проблему на использование единого глобального таймера и избегайте дорогостоящих сравнение времени для каждого прогона.

Теперь у меня есть простой поток, спящий в течение требуемого времени разрешения и обновляющий переменную atomic int ticker в каждом цикле. В функции, которую мне нужно было оптимизировать, я просто сравниваю два целых числа (последний тик и текущий тик). Если не равно, пришло время для обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...