Fájl:Hash table average insertion time.png

Innen: testwiki
Ugrás a navigációhoz Ugrás a kereséshez
Eredeti fájl (954 × 620 képpont, fájlméret: 5 KB, MIME-típus: image/png)

Ez a fájl a Wikimedia Commons megosztott tárhelyről származik, és más projektek is használhatják. A fájl ottani leírólapjának másolata alább látható.

Ezt a képet el kellene készíteni vektorgrafika használatával SVG fájlként. A formátumnak számos előnye van; lásd a Commons:Media for cleanup lapot a további információkért. Ha a képnek már elérhető SVG-formátumú változata, töltsd fel. Az SVG feltöltése után cseréld le ezt a sablont a következőre: {{vector version available|új kép neve.svg}}.

Összefoglaló

Leírás

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.
Forrás Author's Own Work.
 Ez PNG számítógépes grafika Mathematica segítségével készült
Szerző Derrick Coetzee (User:Dcoetzee)
Engedély
(Fájl újrafelhasználása)
Public domain Én, a szerző, ezt a művemet ezennel közkinccsé nyilvánítom. Ez a világ minden részén érvényes.
Egyes országokban ez jogilag nem lehetséges. Ha így van, akkor:
Jogot adok bárkinek, hogy bármilyen célból, feltétel nélkül használhassa ezt a fájlt, kivéve a törvény által kötelezően előírt feltételeket.

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]]]}]]]]

Képaláírások

Adj meg egy egysoros magyarázatot arról, hogy mit mutat be ez a fájl

A fájl által ábrázolt elemek

mű tárgya

4 743 byte

620 képpont

954 képpont

ff51d63ced85aa4254d68028abcd6015766753fc

Fájltörténet

Kattints egy időpontra, hogy a fájl akkori állapotát láthasd.

Dátum/időBélyegképFelbontásFeltöltőMegjegyzés
aktuális2011. február 26., 00:52Bélyegkép a 2011. február 26., 00:52-kori változatról954 × 620 (5 KB)wikimediacommons>Perheliontest PNGOUT plugin

Az alábbi lap használja ezt a fájlt: