Súbor:Hash table average insertion time.png

Pôvodný súbor(954 × 620 pixelov, veľkosť súboru: 5 KB, MIME typ: image/png)

Tento zdieľaný súbor je z Wikimedia Commons a je možné ho používať na iných projektoch. Nižšie sú zobrazené informácie z popisnej stránky súboru.

Tento obrázek (skupina graph) by měl být vytvořen pomocí vektorové grafiky jako SVG soubor. To má několik výhod; podrobnosti najdete na stránce Commons:Media for cleanup. Je-li SVG verze tohoto obrázku již k dispozici, prosím nahrajte ji. Po nahrání nahraďte tuto šablonu šablonou {{Vector version available|jméno nového obrázku.svg}}.

Zhrnutie

Popis

Shows the average number of cache misses expected when inserting into a hash table with various collision resolution mechanisms; on modern machines, this is a good estimate of actual clock time required. This seems to confirm the common heuristic that performance begins to degrade at about 80% table density. Created in Mathematica, Illustrator, and Photoshop.

It is based on a simulated model of a hash table where the hash function chooses indexes for each insertion uniformly at random. The parameters of the model were:

  • A table size of 1,000 elements.
  • An L1 cache line size of 16 words, as on the Pentium 4. L2 cache effects are not accounted for.

For modern CPUs, which have many kilobytes of L1 cache, same logic applies for tables far bigger than size of the cache.

You may be curious what happens in the case where no cache exists. In other words, how does the number of probes (number of reads, number of comparisons) rise as the table fills? The curve is similar in shape to the one above, but shifted left: it requires an average of 24 probes for an 80% full table, and you have to go down to a 50% full table for only 3 probes to be required on average. This suggests that in the absence of a cache, ideally your hash table should be about twice as large for probing as for chaining.
Zdroj Author's Own Work.
 
Táto grafika bola vytvorená pomocou Mathematica.
Autor Derrick Coetzee (User:Dcoetzee)
Povolenie
(Využívanie tohto súboru)
Public domain Ja, držiteľ autorských práv k tomuto dielu, uvoľňujem toto dielo ako voľné dielo (public domain). Toto platí celosvetovo.
V niektorých krajinách to zákon neumožňuje; v tom prípade:
Udeľujem komukoľvek právo používať toto dielo na ľubovoľné účely, bez akýchkoľvek podmienok ak také podmienky nevyžaduje zákon.

Mathematica Coding

Because the linear probing values varied widely according to the random choices used to fill the table, I took the average value over 25 runs. The (rather inefficient) Mathematica code used to generate the table follows:

<<Statistics`DescriptiveStatistics`;

f[tablesize_,points_,cachewords_]:=
  Module[{i,r,j,compares1,compares2,k,slots1,slots2},
    slots1 = Table[0,{i,1,tablesize}];
    slots2 = Table[0,{i,1,tablesize}];
    Table[
      For[i=0,i<Floor[Length[slots1]/(points+1)],i++,
        r=Random[Integer,{1,Length[slots1]}];
        slots1[[r]]++];
      For[i=0,i<Length[slots1]/(points+1),i++,
        r=Random[Integer,{1,Length[slots2]}];
        For[j=r,slots2[[j]]>0,j=If[j\[Equal]Length[slots2],1,j+1]];
        slots2[[j]]++];
      compares2=0;
      For[i=1,i<=Length[slots2],i++,
        For[j=i,slots2[[j]]>0,j=If[j\[Equal]Length[slots2],1,j+1]];
        compares2+=
          Ceiling[If[j\[GreaterEqual]i,j-i,j+Length[slots2]-i]/cachewords]];
      {N[Apply[Plus,slots1]/Length[slots1]]+2,
        N[compares2/Length[slots2]]+1},{k,1,points}]];

t=Table[f[1000,49,16],{i,1,25}];
Export["Hash_table_average_insertion_time.eps",
  Show[Map[ListPlot[#,PlotJoined\[Rule]True,Frame\[Rule]True,
          FormatType\[Rule]TraditionalForm,
          FrameLabel\[Rule]{"Density of table",
              "Average cache misses per insertion"},Axes\[Rule]False]&,
      Table[{i/50,Mean[Table[t[[k,i,j]],{k,1,Length[t]}]]},{j,1,2},{i,1,
          Length[t[[1]]]}]]]]

Štítky

Pridajte jednoriadkové vysvetlenie, čo tento súbor predstavuje

Položky prezentované týmto súborom

motív

História súboru

Po kliknutí na dátum/čas uvidíte ako súbor vyzeral vtedy.

Dátum/ČasNáhľadRozmeryPoužívateľKomentár
aktuálna23:52, 25. február 2011Náhľad verzie z 23:52, 25. február 2011954 × 620 (5 KB)Perheliontest PNGOUT plugin
05:16, 9. november 2005Náhľad verzie z 05:16, 9. november 2005954 × 620 (12 KB)DcoetzeeUpload bigger version, add 1 to chaining line (due to external storage), change labels
01:49, 8. november 2005Náhľad verzie z 01:49, 8. november 2005250 × 162 (6 KB)DcoetzeeShows the average number of cache misses expected when inserting into a hash table with various collision resolution mechanisms; on modern machines, this is a good estimate of actual clock time required. This seems to confirm the common heuristic that per

Na tento súbor odkazuje nasledujúca stránka:

Globálne využitie súborov

Nasledovné ďalšie wiki používajú tento súbor: