2011-08-11 7 views

Odpowiedz

9

Pomysł jest prosty. Załóżmy, że masz dużą tablicę, która zawsze powinna być posortowana. Zmiana lub wstawienie nawet jednego elementu oznacza, że ​​musisz uciekać się do tablicy. Sortowanie jest kosztowne.

Metodę -[NSArray sortedArrayHint] można wywołać na już posortowanej macierzy w celu uzyskania prywatnych danych wewnętrznych, które można wykorzystać do przyspieszenia sortowania tej samej tablicy, zważywszy, że dokonano tylko niewielkiej zmiany.

użycia jest prosty:

  1. Get i przechowywać wskazówkę z oryginalnego posortowanej tablicy przy użyciu -[NSArray sortedArrayHint].
  2. Po niewielkiej zmianie; ośrodek z wykorzystaniem -[NSArray sortedArrayUsingFunction:context:hint:] z zapisaną wskazówką.
  3. Po dużej zmianie; skorzystaj z usługi -[NSArray sortedArrayUsingFunction:context:] i uzyskaj nową podpowiedź.

Co to jest mała lub duża zmiana to coś, co należy zmierzyć za pomocą instrumentów.

Sam nie korzystam z tego, ponieważ bardziej efektywnie wykorzystałem moje własne kategorie na NSArray i NSMutabelArray dla posortowanych wstawek, które używają wyszukiwania binarnego w sortowanej tablicy. Mój kod jest dostępny jako open source tutaj: https://github.com/Jayway/CWFoundation

+0

Twoja odpowiedź była dla mnie bardzo pomocna. –

+0

Na przykład, czy możesz pokazać kod źródłowy? Proszę .. –

+0

Czy używanie "sortedArrayHint" przyspiesza działanie? –

Powiązane problemy