Jak skalują się tablice Python / Numpy wraz ze wzrostem wymiarów tablicy?
Jest to oparte na niektórych zachowaniach, które zauważyłem podczas testowania kodu Python dla tego pytania: Jak wyrazić to skomplikowane wyrażenie za pomocą numpy
Problem polegał głównie na indeksowaniu w celu zapełnienia tablicy. Odkryłem, że zalety używania (niezbyt dobrych) wersji Cython i Numpy w stosunku do pętli Pythona różniły się w zależności od wielkości zaangażowanych tablic. Zarówno Numpy, jak i Cython do pewnego stopnia zwiększają przewagę wydajności (gdzieś w okolicach dla Cython i N = 2000 dla Numpy na moim laptopie), po czym ich zalety spadły (funkcja Cython pozostała najszybsza).
Czy ten sprzęt jest zdefiniowany? Jeśli chodzi o pracę z dużymi tablicami, jakie są najlepsze praktyki, które należy stosować w przypadku kodu, w którym wydajność jest doceniana?
To pytanie ( dlaczego moje skalowanie mnożenia wektorów macierzy? ) Może być powiązane, ale interesuje mnie wiedza na temat różnych sposobów traktowania tablic w skali Pythona względem siebie.
źródło
Odpowiedzi:
Jest kilka rzeczy nie tak z tym testem, na początek nie wyłączam zbierania śmieci i biorę sumę, nie najlepszy czas, ale trzymaj się mnie.
Czy należy się martwić o rozmiar pamięci podręcznej? Zasadniczo mówię „nie”. Zoptymalizowanie go w Pythonie oznacza, że kod jest znacznie bardziej skomplikowany, co daje wątpliwy wzrost wydajności. Nie zapominaj, że obiekty Python dodają kilka kosztów ogólnych, które są trudne do śledzenia i przewidywania. Mogę myśleć tylko o dwóch przypadkach, w których jest to istotny czynnik:
W komentarzach Evert wspomniał o CArray. Zauważ, że nawet działający rozwój został zatrzymany i został porzucony jako samodzielny projekt. Funkcjonalność zostanie włączona do Blaze , trwającego projektu stworzenia „Numpy nowej generacji”.
źródło