2012-09-05 12 views
5

Pracuję nad projektem, w którym eksperymentuję z pytonem boost. Kiedy patrzyłem jak zorganizować mój interfejs pythona, natknąłem się na comment, który twierdził, że istnieją problemy z wydajnością z pytonem przyspieszającym. Czy jest jakiś faktyczny problem z jego wydajnością?Performance boost Python

W tym przypadku pracuję nad dużym projektem i chcemy udostępnić niektóre z nich pythonowi. Zauważyłem, że python przyspieszający ułatwia ujawnienie klas, które już posiadam. Więc wolałbym trzymać się metod Pythona przyspieszającego eksponowanie klas, ponieważ jest to takie proste. O ile ktoś nie ma alternatywy, która jest równie łatwa w użyciu i wydajna.

Odpowiedz

2

Używamy boost :: python do integracji dużej biblioteki wizji komputerowej w wysoce konfigurowalny pakiet oprogramowania dla naukowców z innych dziedzin. Nie natknęliśmy się na obawy ani problemy, które powinniśmy wiedzieć. Jednak ostatnio nie przeprowadziliśmy żadnych testów porównawczych.

2

Jeśli Twój przypadek użycia wymaga dużej liczby połączeń między Pythonem i C++ w ciasnej pętli, Boost.Python może być problemem dotyczącym wydajności, przynajmniej w stosunku do zwijanych ręcznie opakowań, które używają C-API Pythona bezpośrednio. Trudniej jest odgadnąć, czy byłaby gorsza od czegoś równie przyjaznego dla użytkownika, jak SWIG.

Ale największym pytaniem dotyczącym wydajności jest to, czy można tego uniknąć - interfejs API, który pozwala uniknąć wielokrotnego przekraczania bariery C++/Python, generalnie zawsze będzie działał lepiej niż ten, który to robi, niezależnie od tego, jakie narzędzie biblioteki lub opakowania używasz. Najczęściej oznacza to przenoszenie pętli z języka Python do C++ i unikanie wywołań w języku Python, a zwłaszcza konwersji typu Python-to-C++ w obrębie tych pętli.