wydajność wyszukiwania binarnego a wydajność wyszukiwania liniowego w fortran

To pytanie dotyczy wydajności wyszukiwania liniowego w porównaniu z wydajnością wyszukiwania binarnego dla wstępnie posortowanej tablicy w pamięci ciągłej ...

Mam aplikację napisaną w fortran (77!). Jedną z częstych operacji dla mojej części kodu jest znalezienie indeksu w tablicy takiej, żegx(i) <= xin < gx(i+1). Obecnie zaimplementowałem to jakobinary search - przepraszam za etykiety instrukcji igoto - Skomentowałem, jakie równoważne stany będą używać fortran 90 ...

<code>        i=1
        ih=nx/2
201     continue  !do while (.true.)
           if((xin.le.gx(i)).and.(xin.gt.gx(i+1)))then  !found what we want
              ilow=i+1; ihigh=i
              s1=(gx(ihigh)-xin)/(gx(ihigh)-gx(ilow))
              s2=1.0-s1
              return
           endif
           if(i.ge.ih)then
              goto 202 !exit
           endif
           if(xin.le.(gx(ih))then !xin is in second half of array
              i=ih
              ih=nx-(nx-ih)/2
           else !xin is in first half of array
              i=i+1
              ih=i+(ih-i)/2
           endif
        goto 201  !enddo
</code>

Jednak dzisiaj czytałem na Wikipedii o wyszukiwaniu binarnym i natknąłem się na to:

<code>Binary search can interact poorly with the memory hierarchy 
(i.e. caching), because of its random-access nature. For 
in-memory searching, if the span to be searched is small, a
linear search may have superior performance simply because 
it exhibits better locality of reference.
</code>

Nie do końca rozumiem to stwierdzenie - miałem wrażenie, że pobieranie pamięci podręcznej było gromadzone w dużych (ih) kawałkach naraz, więc jeśli zaczniemy na początku tablicy, pomyślałem, że większość tablicy będzie w pamięci podręcznej już (przynajmniej tyle, ile byłoby w przypadku wyszukiwania liniowego), więc nie sądziłem, że to ma znaczenie.

Tak więc moje pytanie brzmi: czy jest jakiś sposób na określenie, który algorytm będzie działał lepiej (wyszukiwanie liniowe lub binarne?) Czy istnieje granica rozmiaru tablicy? Obecnie używam tablic o rozmiarze około 100 elementów ...

questionAnswers(1)

yourAnswerToTheQuestion