Komprimera sessionsdata med asp.net 4.0

Jag skrev tidigare om den kommande funktionen att komprimera sessionsdata i mitt inlägg om nyheter i .net 4.0.
Nu går jag lite djupare och testar hur mycket som komprimeras.

De scenarion som jag har testat är att all text är samma, all text är slumpmässig samt att all text består av lipsum-text.

All text är samma

Här gjorde jag tester med datamängderna 1,5,10,50,100,1000,5000,10000,100000,1000000 och 10000000.
Exempel på text med datamängd 5 tecken är ”aaaaa”.

Resultatet som kan ses i grafen nedan visar att den komprimerade versionen är större fram till ungefär 100 tecken, då blir den komprimerade versionen mindre och vid riktigt stora datamängder blir skillnaden extremt stor och då kommer komprimeringen till sin rätt. Vid 10000000 tecken är den komprimerade versionen mindre än en hundradel av den okomprimerade.

sessionstest upprepning av text
Lägg märke till att grafen är logaritmisk. Grafen ovan visar att det vid 10000000 tecken i komprimerad form tar upp 85151 medan den okomprimerade tar upp 10000040.

All text är slumpmässig

Här gjorde jag tester med datamängderna 1,5,10,50,100,1000,5000,10000,100000,1000000 och 10000000.
Exempel på text med datamängd 10 tecken är ”Rha fFeoaT”.

Här ser man att komprimering inte lönar sig. Vid små datamängder tar det mer utrymme och vid större datamängder lyckas den inte komprimera ner datat.
sessionstest slumpmässig text
Observera att ovanstående graf är logaritmisk.

Lipsumtext

Här gjorde jag tester med datamängderna 1,5,10,50,100,1000,5000,10000,100000.
Exempel på text med datamängd 10 tecken är ”Lorem ipsu”.

Detta test är kanske det mest sannolika eftersom lipsum-texterna så nära det är möjligt efterliknar vanlig text. Om det är objekt som du sparar i sessionen så kommer dessa att serialiseras och förmodligen innehåller dessa viss text, exempelvis namn och adress.

Komprimeringen lönar sig först vid något större datamängder, över 100 tecken. Därefter tar den komprimerade versionen ungefär en tredjedel av den okomprimerade. Det finns givetvis stora vinster i nätverkstrafik och lagringsutrymme/minne där din session sparas.
sessionstest lipsum text
Eftersom ovanstående graf är logaritmisk kan det vara svårt att se att den okomprimerade versionen tar upp 100635 medan den komprimerade tar upp 29597.

Alla de tre ovanstående testerna gjordes med en enda session och en enda sessionsnyckel.
Jag valde därför att göra om exakt samma test men att jag delade upp datat på flera olika sessionsnycklar. Det visade sig att komprimeringsförhållanden var exakt samma som tidigare.

I samband med ovanstående gjorde jag även lasttester på min maskin för att se om minnesanvändning/processor gick upp i samband med att jag aktiverade komprimering. Jag kunde dock med en enda maskin och de fåtal sessioner jag skapade inte mäta några skillnader. Det är givetvis en viss prestandanackdel att komprimera/dekomprimera sessionsdata vid varje skrivning och läsning. Som går att se på testerna ovan så beror det på vilken typ av data man har i sessionen om komprimering lönar sig eller inte, och om man är beredd att offra processorkraft för att spara nätverkstrafik och lagringsutrymme/minne på sessionsservern.

1 kommentar

  1. […] Komprimera sessionsdata med asp.net 4.0 […]

RSS feed for comments on this post

Kommentarer inaktiverade.

%d bloggare gillar detta: