Bartosz Ratajczyk MS SQL Developer
Temat: Zend_Paginator - wydajność tablicy
W pewnej aplikacji używam Zend_Paginator z adapterem DbSelect lub DbTableSelect. Po dyskusji na grupie nt. modeli zastanawiam się nad zwracaniem wyników wyszukiwania jako tablicy obiektów (jak w przykładzie z quickstarta ZF) - zamiast dotychczasowego szukania na bazie i zwracania np. Zend_Db_Table_Rowset_Abstract - ale przez to tracę automatykę paginatora przy obliczaniu ilości danych w selekcie i być może ogólnie na wydajności.Znacie jakieś testy, artykuły, albo wiecie z własnego doświadczenia jak wygląda wydajność paginacji na tablicy np. z wyników wyszukiwania w porównaniu do podobnego wyniku przy zastosowaniu adaptera DbSelect/DbTableSelect? Niby DbSelect też zwraca tablicę, ale już ograniczoną do zestawu wyników ograniczonego o limit/offset.
Oczywiście użycie cache może sporo przyspieszyć i biorę to pod uwagę.
A może zastosowanie własnej klasy rozszerzającej Zend_Db_Table_Row_Abstract może coś usprawnić?
EDIT. Zrobiłem test, być może mało miarodajny. Stworzyłem tablicę zawierającą 10 000 obiektów, każdy obiekt ma 4 właściwości. Zrobienie 10 000 razy array_slice() z offset między 0 a 10000 oraz limit = 20 na tej tablicy trwało sekundę. A losowe array_slice($a, 8032, 100, true) trwało 0.007 sekundy. Testy na "zwykłym" laptopie. Samo utworzenie tablicy 10k elementów zajmowało < 0.1 s.
Być może zatem nie ma co się aż tak stresować, ale nadal jestem ciekawy innych testów.
EDIT2. Tworzenie tablicy odbywało się z palca, nie jako przetwarzanie wyniku odpytania bazyBartosz Ratajczyk edytował(a) ten post dnia 24.08.10 o godzinie 09:33