Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 17, 2011 22:36:49

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

Время запуска сишных функций

Здравствуйте.
Есть проект, написанный на С++. Возможно ли написать систему тестирования производительности (время выполнения, затрачиваемые ресурсы …) на питоне ? Интересует какую погрешность будет давать вызов сишных функций питоном, и соответственно порог точности измерений.
Например функция на С++ выполняется 5 с (время, которое и нужно померять), и нас устроит погрешность в 0.5 с, тогда интуитивно можно догадаться, что можно пренебречь погрешностью, вносимую питоном. Вопрос, как оценить пороговые значения, при которых использование питона недопустимо.



Офлайн

#2 Ноя. 17, 2011 23:21:36

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Время запуска сишных функций

как то всё расплывчато написано, возможно ли получить более подробное описание что именно тестировать, и не плохо бы исходники посмотреть. На крайний случай отсылать запросы в dll если есть уже готовые библиотеки. Оптимизация кода-это сильная магия и тут единственного пути нет. Так что, опишите плз подробнее.

Офлайн

#3 Ноя. 18, 2011 00:32:32

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

Время запуска сишных функций

Да в том и дело, что исходников на питоне еще нет. Только оцениваю возможен ли в принципе такой подход. Я не имел в виду оптимизацию. Попробую описать более подробно.

Есть функция на С. Нужно измерить сколько времени она выполняется.
Идея такая - используя свиг, вызывать ее в питоновском модуле. Используя профайлер замерить время выполнения.

Для функционального тестирования подход приемлем - очень удобно на питоне описывать тест кейсы (последовательно запускать нужные функции, передавать им параметры и анализировать вывод). Но если нужно протестировать время выполнения, то придется учитывать время выполнения питоновского кода так как все сишные функции запускаются через питон.
Думал перед тем как написать тест и померять спросить может кто-то уже подобным занимался. Не хочется придумывать велосипед. Но в принципе проверка не должна занять много времени. Если будет что-то интересное - напишу.



Офлайн

#4 Ноя. 18, 2011 01:01:01

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Время запуска сишных функций

можно замерить исполнение кода на “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)

Офлайн

#5 Ноя. 18, 2011 01:14:51

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Время запуска сишных функций

а еще интересно если то вот http://ru.wikipedia.org/wiki/Psyco

Офлайн

#6 Ноя. 18, 2011 06:15:27

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Время запуска сишных функций

Я бы сделал так: откомпиллировал ф-ию через gcc, а потом запустил-замерил скорость выполнения через subprocess, при этом можно будет воспользоватся bash командой time которая выдаст более точную и детальную информацию. хотя для ф-ий в 5сек достаточно просто через subprocess.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version