Я хотел бы знать, сколько времени требуется для выполнения некоторого кода. Код, который я выполняю, имеет дело с матрицами и операциями openCV. Код будет запущен в среде ROS в Linux. Я не хочу, чтобы код прерывался системными функциями во время моего бенчмаркинга.Должен ли я сделать большую функцию атома, чтобы точно ее измерить?
Глядя на this post о бенчмаркинге, ответчик сказал, что зернистость результата составляет 15 мс. Я хотел бы сделать намного лучше, чем это, и поэтому я рассматривал возможность атомизации функции (только для целей бенчмаркинга). Я не уверен, что это хорошая идея по нескольким причинам, прежде всего потому, что у меня нет глубокого понимания архитектуры процессора.
void atomic_wrapper_function(const object& A, const object& B) {
static unsigned long running_sum = 0;
unsigned long before, after;
before = GetTimeMs64();
function_to_benchmark(A, B);
after = GetTimeMs64();
running_sum += (after - before);
}
Функция Я пытаюсь репера не короткая функция.
Будет ли точный результат? Для обозначения времени, которое я планирую использовать, this function by Andreas Bonini.
Будет ли это делать что-то ужасное для моего компьютера? Назовите меня суеверным, но я думаю, что хорошо спросить этот вопрос.
Я использую C++ 11 на ядре Linux.
Нет разумного компилятора для оптимизации атомизации –
Что именно подразумевается под словом «атомный» в этом контексте? –
«Является ли функция атомной» означать что-то конкретное в OpenCV? Потому что я не вижу ничего атомного в этой функции, кроме его имени. –