23 października 2010

Wpływ fragmentacji dysku na czas kompresji

Często mi się zdarza kompresować różne pliki. Sporo tego robi się na moim kompie, ponadto sam temat kompresji mnie interesuje. Przy okazji kompresowania różnych plików postanowiłem czasami pobawić się w zapisywanie wyników i stworzenie swego rodzaju uniwersalnych testów.
Na pierwszy ogień należy ustalić warunki przeprowadzania testu. W trakcie każdej z prób włączone były jedynie podstawowe aplikacje plus komputer nie był zajęty niczym innym. Nie zajmował się ani odczytem ani zapisem do dysku, na którym odbywała się kompresja. Chciałem zobaczyć jak znaczny wpływ będzie miała fragmentacja dysku NTFS na czas kompresji.

Sprzęt:
Procesor: Intel(R) Celeron(R) CPU 2.60Ghz
Pamięć RAM: 1,25GB
System operacyjny: Windows XP Professional x86
Dysk: Samsung SP0411N (ATA 40GB)
System plików: NTFS

Kompresowany plik to gra na PlayStation - Jet Moto w formie 3 plików (ccd, img, sub). Kompresja odbywała się w trybie tekstowym (z poziomu cmd) przy pomocy Rar 3.93.
Rozmiar przed kompresją: 456 834 411 bajtów

Wyniki
Średni czas kompresji na dysku o poziomie fragmentacji 36 - 37% wynosi 339,81 sekundy.
Średni czas kompresji na dysku o poziomie fragmentacji 0% wynosi 338,25 sekundy.
Różnica na korzyść dysku zdefragmentowanego wyniosła 1,56 sekundy.

Jak widać, różnica okazała się mało znacząca przy tym poziomie fragmentacji dysku. W związku z tym przy okazji przyszłych analiz nie mam zamiaru mocno się tym elementem przejmować. Gdy "uda mi się" osiągnąć znacznie wyższy poziom fragmentacji, może przeprowadzę badanie ponownie.

Pozostałe efekty
Przy okazji testów dowiedziałem się też kilku innych ciekawych rzeczy nt. Rara
Wydajność poszczególnych poziomów kompresji kształtuje się następująco:
Poziom kompresji Bajtów po kompresji Procent kompresji Czas kompresji Efektywność
m0 "bez kompresji" 456 834 687 100,00% 42,97 -
m1 "najszybsza" 354 212 466 77,54% 271,68 12,09
m2 "szybka" 337 240 936 73,82% 803,68 30,7
m3 "normalna" 269 504 905 58,99% 288,64 7,04
m4 "dobra" 269 219 960 58,93% 303,33 7,39
m5 "najlepsza" 269 213 184 58,93% 323,89 7,89
Efektywność to przeliczenie ile sekund kosztuje kompresor uzyskanie jednego procenta odchudzenia pliku. Im mniejsza wartość, tym wyższa efektywność. Jak widać, dość słusznie wybrano poziom m3 za domyślny. Za to bardzo podejrzanie wyglądają wyniki m2. Żeby nie było - to, co widzicie to średnia z 4 dokonanych prób, zatem nie ma mowy o jakimś jednorazowym przypadku. Ktoś ma jakiś pomysł dlaczego metoda w WinRarze ochrzczona jako "szybka" jest de facto tak potwornie wolna?

Do dalszych testów mam zamiar spróbować kompresorów: rar, 7zip, zip, kgb, być może skorzystam również z paq8l (jeszcze nie wiem w jakiej wersji), bo podobno efekty osiąga najlepsze. Jeżeli macie jeszcze jakichś kandydatów, chętnie przyjmę sugestie w komentarzach.

Szczegółowo - źródło
Poniżej przedstawiam precyzyjną tabelę wyników analizy oraz printscreeny obrazujące szczegółowo strukturę i poziom fragmentacji na każdym poziomie.

Metoda kompresji Rozmiar po kompresji (w bajtach) Procent kompresji Przed Po Czas kompresji (w sekundach) Koszt 1% kompresji w sekundach Poziom fragmentacji partycji dyskowej Opcje kompresji
h m s h m s
RAR 3.93 456 834 687 100,00% 9 50 07,81 9 51 04,32 56,51 -935351,90 36% m0
RAR 3.93 354 212 466 77,54% 9 51 04,32 9 55 36,14 271,82 12,10 36% m1
RAR 3.93 337 240 936 73,82% 9 55 36,14 10 08 55,45 799,31 30,53 36% m2
RAR 3.93 269 504 905 58,99% 10 08 55,45 10 13 42,71 287,26 7,01 36% m3
RAR 3.93 269 219 960 58,93% 10 13 42,71 10 18 49,78 307,07 7,48 36% m4
RAR 3.93 269 213 184 58,93% 10 18 49,78 10 24 09,90 320,12 7,79 36% m5
RAR 3.93 456 834 687 100,00% 11 28 59,79 11 29 37,10 37,31 -617554,05 37% m0
RAR 3.93 354 212 466 77,54% 11 29 37,10 11 34 10,34 273,24 12,16 37% m1
RAR 3.93 337 240 936 73,82% 11 34 10,34 11 47 33,76 803,42 30,69 37% m2
RAR 3.93 269 504 905 58,99% 11 47 33,76 11 52 25,96 292,20 7,13 37% m3
RAR 3.93 269 219 960 58,93% 11 52 25,96 11 57 29,70 303,74 7,40 37% m4
RAR 3.93 269 213 184 58,93% 11 57 29,70 12 02 55,45 325,75 7,93 37% m5
RAR 3.93 456 834 687 100,00% 13 45 29,75 13 46 08,12 38,37 -635099,14 0% m0
RAR 3.93 354 212 466 77,54% 13 46 08,12 13 50 38,65 270,53 12,04 0% m1
RAR 3.93 337 240 936 73,82% 13 50 38,65 14 04 07,84 809,19 30,91 0% m2
RAR 3.93 269 504 905 58,99% 14 04 07,84 14 08 54,95 287,11 7,00 0% m3
RAR 3.93 269 219 960 58,93% 14 08 54,95 14 13 56,89 301,94 7,35 0% m4
RAR 3.93 269 213 184 58,93% 14 13 56,89 14 19 18,29 321,40 7,83 0% m5
RAR 3.93 456 834 687 100,00% 14 46 54,76 14 47 34,46 39,70 -657113,27 0% m0
RAR 3.93 354 212 466 77,54% 14 47 34,46 14 52 05,60 271,14 12,07 0% m1
RAR 3.93 337 240 936 73,82% 14 52 05,60 15 05 28,39 802,79 30,67 0% m2
RAR 3.93 269 504 905 58,99% 15 05 28,39 15 10 16,39 288,00 7,02 0% m3
RAR 3.93 269 219 960 58,93% 15 10 16,39 15 15 16,96 300,57 7,32 0% m4
RAR 3.93 269 213 184 58,93% 15 15 16,96 15 20 45,25 328,29 7,99 0% m5


2 komentarze:

  1. Jak to już dziś gadalim - rozważ waść zabawienie się z dyskiem SSD :)

    http://www.codinghorror.com/blog/2010/09/revisiting-solid-state-hard-drives.html

    I jak już spamuję to może jeszcze http://www.pcmod.pl/thread-test-kompresor%C3%B3w-kompresja-plik%C3%B3w--212 :)

    OdpowiedzUsuń
  2. http://kwejk.pl/obrazek/1747967/zip-bomba.html

    OdpowiedzUsuń