Yurietc
Ноя. 17, 2011 22:36:49
Здравствуйте.
Есть проект, написанный на С++. Возможно ли написать систему тестирования производительности (время выполнения, затрачиваемые ресурсы …) на питоне ? Интересует какую погрешность будет давать вызов сишных функций питоном, и соответственно порог точности измерений.
Например функция на С++ выполняется 5 с (время, которое и нужно померять), и нас устроит погрешность в 0.5 с, тогда интуитивно можно догадаться, что можно пренебречь погрешностью, вносимую питоном. Вопрос, как оценить пороговые значения, при которых использование питона недопустимо.
sypper-pit
Ноя. 17, 2011 23:21:36
как то всё расплывчато написано, возможно ли получить более подробное описание что именно тестировать, и не плохо бы исходники посмотреть. На крайний случай отсылать запросы в dll если есть уже готовые библиотеки. Оптимизация кода-это сильная магия и тут единственного пути нет. Так что, опишите плз подробнее.
Yurietc
Ноя. 18, 2011 00:32:32
Да в том и дело, что исходников на питоне еще нет. Только оцениваю возможен ли в принципе такой подход. Я не имел в виду оптимизацию. Попробую описать более подробно.
Есть функция на С. Нужно измерить сколько времени она выполняется.
Идея такая - используя свиг, вызывать ее в питоновском модуле. Используя профайлер замерить время выполнения.
Для функционального тестирования подход приемлем - очень удобно на питоне описывать тест кейсы (последовательно запускать нужные функции, передавать им параметры и анализировать вывод). Но если нужно протестировать время выполнения, то придется учитывать время выполнения питоновского кода так как все сишные функции запускаются через питон.
Думал перед тем как написать тест и померять спросить может кто-то уже подобным занимался. Не хочется придумывать велосипед. Но в принципе проверка не должна занять много времени. Если будет что-то интересное - напишу.
sypper-pit
Ноя. 18, 2011 01:01:01
sypper-pit
Ноя. 18, 2011 01:14:51
o7412369815963
Ноя. 18, 2011 06:15:27
Я бы сделал так: откомпиллировал ф-ию через gcc, а потом запустил-замерил скорость выполнения через subprocess, при этом можно будет воспользоватся bash командой time которая выдаст более точную и детальную информацию. хотя для ф-ий в 5сек достаточно просто через subprocess.