Форум сайта python.su
Здравствуйте.
Есть проект, написанный на С++. Возможно ли написать систему тестирования производительности (время выполнения, затрачиваемые ресурсы …) на питоне ? Интересует какую погрешность будет давать вызов сишных функций питоном, и соответственно порог точности измерений.
Например функция на С++ выполняется 5 с (время, которое и нужно померять), и нас устроит погрешность в 0.5 с, тогда интуитивно можно догадаться, что можно пренебречь погрешностью, вносимую питоном. Вопрос, как оценить пороговые значения, при которых использование питона недопустимо.
Офлайн
как то всё расплывчато написано, возможно ли получить более подробное описание что именно тестировать, и не плохо бы исходники посмотреть. На крайний случай отсылать запросы в dll если есть уже готовые библиотеки. Оптимизация кода-это сильная магия и тут единственного пути нет. Так что, опишите плз подробнее.
Офлайн
Да в том и дело, что исходников на питоне еще нет. Только оцениваю возможен ли в принципе такой подход. Я не имел в виду оптимизацию. Попробую описать более подробно.
Есть функция на С. Нужно измерить сколько времени она выполняется.
Идея такая - используя свиг, вызывать ее в питоновском модуле. Используя профайлер замерить время выполнения.
Для функционального тестирования подход приемлем - очень удобно на питоне описывать тест кейсы (последовательно запускать нужные функции, передавать им параметры и анализировать вывод). Но если нужно протестировать время выполнения, то придется учитывать время выполнения питоновского кода так как все сишные функции запускаются через питон.
Думал перед тем как написать тест и померять спросить может кто-то уже подобным занимался. Не хочется придумывать велосипед. Но в принципе проверка не должна занять много времени. Если будет что-то интересное - напишу.
Офлайн
можно замерить исполнение кода на “C” стандартными утилитами , потом написать ваш модуль и после этого просто отнять (общая_скорость-скорость_отработки_С_кода), а вообще http://stackoverflow.com/questions/766335/python-speed-testing-time-difference-milliseconds так же обсуждали на форуме http://python.su/forum/viewtopic.php?id=9976 а на закуску http://theunixgeek.blogspot.com/2008/09/c-vs-python-speed.html и http://habrahabr.ru/blogs/programming/66562/
Отредактировано (Ноя. 18, 2011 01:06:40)
Офлайн
а еще интересно если то вот http://ru.wikipedia.org/wiki/Psyco
Офлайн
Я бы сделал так: откомпиллировал ф-ию через gcc, а потом запустил-замерил скорость выполнения через subprocess, при этом можно будет воспользоватся bash командой time которая выдаст более точную и детальную информацию. хотя для ф-ий в 5сек достаточно просто через subprocess.
Офлайн