Jak w temacie. Muszę zoptymalizować petlę generującą raport roczny dla mojej bazy. Nie zaciemniając kodu pętla przeszukuje taką oto strukturę:
type
TTab = array [1..8, 1..12, 1..31, 1..2, 1..600] of string[3];
TTabelaWynikow = array [1..100] of LongWord;
TWzorce = array [1..100] of string[3];
Pętle 1..8, 1..12, 1..31, 1..2 wykonują się całe (zawsze => 5952 iteracji). Dochodzimy do sedna problemu: pętla 1..600 . I tu własnie szukam optymalizacji. 1..600 to ilość sztuk, która jest zmienna, czyli pętla wykonuje się w zależności od zmiennej Wyniki.All. To też nie problem Jeżeli Wyniki.All = 0 to Break.
Tablica przechowuje dane typu: E29..E40, M24..M36, W03..W99. Litera to typ, cyfra to indeks. Całość wzorców mam w tablicy 1..100. Zrobienie raportu polega na wyliczeniu ile razy dany błąd wystąpił czyli mamy
for i := 1 to 8 do
for j := 1 to 12 do
for k := 1 to 31 do
for l := 1 to 2 do
for m := 1 to Wyniki.All do
for n := 1 to 100 do
if Tab[i, j, k, l, m] = Wzorce[n] then Inc(TabelaWynikow[n], 1);
Jak maksymalnie przyspieszyć wyszukiwanie odpowiedniego wzorca. Możecie dać propozycje? Celowo nie zamieszczam mojego rozwiązania aby nic nie sugerować.
// Dopisane: sam nie wiedziałem czy ten temat bardziej pasuje do IO czy do delphi lub może do nietuzinkowych tematów (optymalizacja to jednak złożone zagadnenie. Prośba do modów o przeniesienie do odp. działu. Pozdrawiam.