Найти - Пользователи
Полная версия: Как эффективно использовать pyode?
Начало » Python для новичков » Как эффективно использовать pyode?
1 2
luckmaster
Striver
Если не сложно, напиши, что получилось после всех оптимизаций, какая скорость?
Та вобщемто никаких особо хитрых оптимизаций не делал, всегото изменил две строчки в своем коде:

1. Заменил world.step(dt / n) на world.quickStep(dt / n)

2. И добавил сразу после инициализации world вот такую строку
world.setAutoDisableFlag(True)
Здесь можно было бы еще поиграться с функциями
setAutoDisableAngularThreshold(threshold)
setAutoDisableLinearThreshold(threshold)
Но мне эти 2 функции не нужны были, т.к. размеры объектов у меня близки к единице и мне подошли умолчательные значения этих параметров.

space = Space(type=1) # Create a HashSpace
Этим пользоваться пока что не стал, т.к. в моем случае от этого мало толку. У меня все объекты в одной большой куче, думаю если их раскидать по маленьким кучкам то от HashSpace будет гораздо больше толку. Конечно если раскидать по маленьким кучкам, то и без HashSpace скорость увеличится, т.к. меньше столкновений будет :) Но всеравно от применения HashSpace в такой ситуации скорость должна еще больше возрасти. Я правда не проверял на сколько возрастет скорость благодаря HashSpace если объекты разбросаны по маленьким кучкам, т.к. мне нужна одна большая куча :)

На данный момент у меня 50 объектов (25 сфер и 25 кубов), все они лежат какбы в аквариуме, т.е. куча разползтись в стороны НЕ может. В общем получаю около 30 fps. А до оптимизаци в такой же ситуации было гдето 2-5 fps. Наибольшую роль в оптимизации сыграла функция quickStep, причем если добавить объектов, то выгода от использования quickStep будет только возрастать, т.к. она на много лучше маштабируется чем step.

Вот и все, мне пока хватает скорости. В будующем, если сложность сцены возрастет и опять будет тормозить, тогда буду думать как еще оптимизировать.

P.S. Если надумаешь разбираться с pyode, то имей ввиду документация по pyode довольно скудная, лично мне очень помогла разобраться документация по ode (по ode даже русская есть).
luckmaster
Вчера попробовл запустить свою программу на winXP SP2 32-bits, оказалось что на этой ОС программа работает раза в 1,5 - 2 медленне чем на GNU/Linux.

Все что я писал ранее относилось конкретно к Xubuntu 8.10 32-bits (ядро стандартное без каких либо оптимизаций, весь софт тоже стандартный, т.е. под себя ничего не перекомпилировал). Чесно говоря не ожидал что в разных ОС будет такая большая разница.

P.S.
В винде использовал python2.5.4, pyode1.2.0, pygame1.9.1
В линуксе использовал python 2.5.2, pyode1.2.0, pygame1.8.1
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB