Я использовал библиотеку Criterion для записи тестов для моих функций Haskell. Теперь я реализую тот же алгоритм в C, чтобы сравнить производительность с Haskell. Вопрос в том, как я могу сделать это надежно? Критерий имеет множество причудливых вещей, таких как учет затрат на часовые вызовы и статистический анализ результатов. Я предполагаю, что если бы я просто измерил время, необходимое для моей функции C, это не будет сравнимо с результатами, возвращаемыми Criterion. В своем оригинальном посте о Criterion Брайан О'Салливан пишет: "Он должен быть даже простым в использовании критерием для тестирования C-кода и программ командной строки". Вопрос в том, как? Takayuki Muranushi сравнивает C реализацию DFT с Haskell, создавая потоки и вызывая исполняемый файл, но я боюсь, что это добавит много дополнительных накладных расходов (создайте новый поток, запустите приложение, вывод на stdio, а затем чтение из него), что делает результаты несравнимыми. Я также подумал об использовании FFI, но снова опасаюсь, что дополнительные накладные расходы сделают такое сравнение несправедливым.
Если нет возможности использовать критерий для надежного тестирования C, то какие подходы к сравнительному анализу C вы бы порекомендовали? Я прочитал здесь несколько вопросов по SO, и кажется, что существует множество различных функций, которые позволяют измерять системное время, но они либо обеспечивают время в миллисекундах, либо имеют большие накладные расходы.