テストに使ったファイルは 1 つ 4.5MB 程度のテキストファイルを 22 個アーカイブした 100MB の tar ファイル。詳細は以下。
$ tar tvf log.tar -rw-r--r-- hoge/hoge 4478655 2009-05-04 23:59 2009-05-04.log -rw-r--r-- hoge/hoge 4544114 2009-05-05 23:59 2009-05-05.log -rw-r--r-- hoge/hoge 4631386 2009-05-06 23:59 2009-05-06.log -rw-r--r-- hoge/hoge 4596132 2009-05-07 23:59 2009-05-07.log -rw-r--r-- hoge/hoge 4621793 2009-05-08 23:59 2009-05-08.log -rw-r--r-- hoge/hoge 4415000 2009-05-09 23:59 2009-05-09.log -rw-r--r-- hoge/hoge 4569259 2009-05-10 23:59 2009-05-10.log -rw-r--r-- hoge/hoge 4466073 2009-05-11 23:59 2009-05-11.log -rw-r--r-- hoge/hoge 4783604 2009-05-12 23:59 2009-05-12.log -rw-r--r-- hoge/hoge 4636846 2009-05-13 23:59 2009-05-13.log -rw-r--r-- hoge/hoge 4605847 2009-05-14 23:59 2009-05-14.log -rw-r--r-- hoge/hoge 4533941 2009-05-15 23:59 2009-05-15.log -rw-r--r-- hoge/hoge 4393997 2009-05-16 23:59 2009-05-16.log -rw-r--r-- hoge/hoge 4879404 2009-05-17 23:59 2009-05-17.log -rw-r--r-- hoge/hoge 4715859 2009-05-18 23:59 2009-05-18.log -rw-r--r-- hoge/hoge 4416494 2009-05-19 23:59 2009-05-19.log -rw-r--r-- hoge/hoge 4594489 2009-05-20 23:59 2009-05-20.log -rw-r--r-- hoge/hoge 4469918 2009-05-21 23:59 2009-05-21.log -rw-r--r-- hoge/hoge 4707008 2009-05-22 23:59 2009-05-22.log -rw-r--r-- hoge/hoge 4572997 2009-05-23 23:59 2009-05-23.log -rw-r--r-- hoge/hoge 5089547 2009-05-24 23:59 2009-05-24.log -rw-r--r-- hoge/hoge 4631351 2009-05-25 23:59 2009-05-25.log $ ls -la log.tar* -rw-r--r-- 1 hoge hoge 101376000 May 28 17:52 log.tar
xz による圧縮と展開。これを含めて以降は圧縮率は最高のものを使用。
$ time xz -9 log.tar real 497m31.607s user 5m53.382s sys 81m34.590s $ ls -la log.tar* -rw-r--r-- 1 hoge hoge 23211216 May 28 17:54 log.tar.xz $ time xz -d log.tar.xz real 0m8.739s user 0m3.876s sys 0m0.432s
bzip2 による圧縮と展開。
$ time bzip2 -9 log.tar real 0m42.859s user 0m21.101s sys 0m0.280s $ ls -la log.tar* -rw-r--r-- 1 hoge hoge 27761964 May 28 17:54 log.tar.bz2 $ time bzip2 -d log.tar.bz2 real 0m17.876s user 0m8.317s sys 0m0.580s
gzip による圧縮と展開。
$ time gzip -9 log.tar real 0m28.624s user 0m13.961s sys 0m0.336s $ ls -la log.tar* -rw-r--r-- 1 hoge hoge 41040119 May 28 17:54 log.tar.gz $ time gzip -d log.tar.gz -rw-r--r-- 1 hoge hoge 101376000 May 28 17:52 log.tar
xz による圧縮と展開。これを含めて以降は圧縮率が最高となるオプションを使用。
$ time xz -9 log.tar real 497m31.607s user 5m53.382s sys 81m34.590s $ ls -la log.tar* -rw-r--r-- 1 hoge hoge 23211216 May 28 17:54 log.tar.xz $ time xz -d log.tar.xz real 0m8.739s user 0m3.876s sys 0m0.432s
bzip2 による圧縮と展開。
$ time bzip2 -9 log.tar real 0m42.859s user 0m21.101s sys 0m0.280s $ ls -la log.tar* -rw-r--r-- 1 hoge hoge 27761964 May 28 17:54 log.tar.bz2 $ time bzip2 -d log.tar.bz2 real 0m17.876s user 0m8.317s sys 0m0.580s
gzip による圧縮と展開。
$ time gzip -9 log.tar real 0m28.624s user 0m13.961s sys 0m0.336s $ ls -la log.tar* -rw-r--r-- 1 hoge hoge 41040119 May 28 17:54 log.tar.gz $ time gzip -d log.tar.gz real 0m3.544s user 0m1.324s sys 0m0.196s
まとめると以下のようになる。time コマンドの出力では user 部分がコマンドにより CPU が使用された時間。圧縮速度については xz は bzip2 と gzip に比べて 1 桁遅い。展開速度については xz は gzip と同程度、bzip2 はこれらより 1 桁遅い。xz は圧縮に CPU 時間を消費するが、圧縮ファイルを展開する回数が多いほど効率が良くなる。bzip2 は xz に圧縮時間で 1 桁短く、圧縮率で迫り、圧縮展開時間比で劣る。gzip は xz と同様の特徴を持つが、xz に比べて圧縮速度が 1 桁早く、圧縮率が悪い。
コマンド | サイズ (bytes) | 圧縮率 (%) | 圧縮時間 (sec) | 圧縮速度 (bytes/sec) | 展開時間 (sec) | 展開速度 (bytes/sec) | 圧縮展開時間比 |
---|---|---|---|---|---|---|---|
xz -9 | 23211216 | 22.89 | 353.382 | -221190.62 | 91.17 | 20166352.94 | 3.876 |
bzip2 -9 | 27761964 | 27.38 | 21.101 | -3488651.53 | 2.53 | 8851032.34 | 8.317 |
gzip -9 | 41040119 | 40.48 | 13.961 | -4321744.93 | 10.54 | 45570907.09 | 1.324 |
ここで圧縮速度 = (圧縮後ファイルサイズ - 圧縮前ファイルサイズ) / 圧縮時間。展開速度 = (展開後ファイルサイズ - 展開前ファイルサイズ) / 展開時間。
今回、xz, bzip2, gzip 圧縮で効率の比較を行った。その結果、xz は圧縮時間より圧縮率、圧縮展開時間比が重要な場合 (アーカイブを多数に配布する場合等) に適し、bzip2 は圧縮展開時間比より圧縮率、圧縮時間が重要な場合 (圧縮展開を繰り返す場合) に適し、gzip は圧縮率より、圧縮展開時間比が重要な場合 (xz と同様) に適すということが言える。
ダミーファイルの場合
圧縮元ファイルを圧縮に適さないランダムな内容のファイルにすることで、処理速度自体を比較できないかなぁ。
/dev/urandom をソースにして 1GB のダミーファイルを作成
$ dd if=/dev/urandom of=./dummy_file.dat count=1000 bs=1000000 1000+0 records in 1000+0 records out 1000000000 bytes (1.0 GB) copied, 129.265 s, 7.7 MB/s
gzip で圧縮展開。時間は time で計測。圧縮展開の結果は /dev/null に捨てる
$ time --verbose gzip --verbose --stdout --best ./dummy_file.dat > /dev/null ./dummy_file.dat: -0.0% Command being timed: "gzip --verbose --stdout --best ./dummy_file.dat" User time (seconds): 79.57 System time (seconds): 1.24 Percent of CPU this job got: 97% Elapsed (wall clock) time (h:mm:ss or m:ss): 1:22.47 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1860 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 1 Minor (reclaiming a frame) page faults: 137 Voluntary context switches: 319 Involuntary context switches: 518 Swaps: 0 File system inputs: 1945608 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose gzip --verbose --stdout --best ./dummy_file.dat > ./dummy_file.dat.gz ./dummy_file.dat: -0.0% Command being timed: "gzip --verbose --stdout --best ./dummy_file.dat" User time (seconds): 80.76 System time (seconds): 14.42 Percent of CPU this job got: 92% Elapsed (wall clock) time (h:mm:ss or m:ss): 1:42.79 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1860 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 1 Minor (reclaiming a frame) page faults: 137 Voluntary context switches: 602 Involuntary context switches: 372 Swaps: 0 File system inputs: 1945160 File system outputs: 1953448 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose gzip --verbose --stdout --decompress ./dummy_file.dat.gz > /dev/null ./dummy_file.dat.gz: -0.0% Command being timed: "gzip --verbose --stdout --decompress ./dummy_file.dat.gz" User time (seconds): 12.38 System time (seconds): 1.20 Percent of CPU this job got: 62% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:21.71 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1748 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 1 Minor (reclaiming a frame) page faults: 97 Voluntary context switches: 1739 Involuntary context switches: 47 Swaps: 0 File system inputs: 1953456 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ ls --time-style=+%H:%M --all --format=long ./dummy_file.dat ./dummy_file.dat.gz -rw-r--r-- 1 u00 u00 1000000000 14:08 ./dummy_file.dat -rw-r--r-- 1 u00 u00 1000161997 14:11 ./dummy_file.dat.gz
bzip2 で圧縮展開。時間は time で計測。圧縮展開の結果は /dev/null に捨てる
$ time --verbose bzip2 --verbose --stdout --best ./dummy_file.dat > /dev/null ./dummy_file.dat: 0.996:1, 8.035 bits/byte, -0.44% saved, 1000000000 in, 1004435202 out. Command being timed: "bzip2 --verbose --stdout --best ./dummy_file.dat" User time (seconds): 474.61 System time (seconds): 1.30 Percent of CPU this job got: 98% Elapsed (wall clock) time (h:mm:ss or m:ss): 8:04.99 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 7596 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 1695 Voluntary context switches: 1368 Involuntary context switches: 2434 Swaps: 0 File system inputs: 1945096 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose bzip2 --verbose --stdout --best ./dummy_file.dat > ./dummy_file.dat.bz ./dummy_file.dat: 0.996:1, 8.035 bits/byte, -0.44% saved, 1000000000 in, 1004435202 out. Command being timed: "bzip2 --verbose --stdout --best ./dummy_file.dat" User time (seconds): 472.55 System time (seconds): 16.34 Percent of CPU this job got: 97% Elapsed (wall clock) time (h:mm:ss or m:ss): 8:23.94 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 7624 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 1698 Voluntary context switches: 2298 Involuntary context switches: 1135 Swaps: 0 File system inputs: 1945152 File system outputs: 1961792 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose bzip2 --verbose --stdout --decompress ./dummy_file.dat.bz > /dev/null ./dummy_file.dat.bz: done Command being timed: "bzip2 --verbose --stdout --decompress ./dummy_file.dat.bz" User time (seconds): 173.11 System time (seconds): 1.88 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 2:56.65 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 4684 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 970 Voluntary context switches: 174 Involuntary context switches: 669 Swaps: 0 File system inputs: 1961792 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ ls --time-style=+%H:%M --all --format=long ./dummy_file.dat ./dummy_file.dat.bz -rw-r--r-- 1 u00 u00 1000000000 14:08 ./dummy_file.dat -rw-r--r-- 1 u00 u00 1004435202 14:28 ./dummy_file.dat.bz
xz で圧縮展開。時間は time で計測。圧縮展開の結果は /dev/null に捨てる
$ time --verbose xz --verbose --stdout --best ./dummy_file.dat > /dev/null ./dummy_file.dat (1/1) 100 % 953.7 MiB / 953.7 MiB = 1.000 1.0 MiB/s 15:32 Command being timed: "xz --verbose --stdout --best ./dummy_file.dat" User time (seconds): 930.47 System time (seconds): 2.10 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 15:32.80 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 691096 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 172372 Voluntary context switches: 23 Involuntary context switches: 3258 Swaps: 0 File system inputs: 1945136 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose xz --verbose --stdout --best ./dummy_file.dat > ./dummy_file.dat.xz ./dummy_file.dat (1/1) 100 % 953.7 MiB / 953.7 MiB = 1.000 925 KiB/s 17:35 Command being timed: "xz --verbose --stdout --best ./dummy_file.dat" User time (seconds): 1042.30 System time (seconds): 12.19 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 17:35.57 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 690900 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 15 Minor (reclaiming a frame) page faults: 172356 Voluntary context switches: 209 Involuntary context switches: 3756 Swaps: 0 File system inputs: 1946456 File system outputs: 1953224 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose xz --verbose --stdout --decompress ./dummy_file.dat.xz > /dev/null ./dummy_file.dat.xz (1/1) 100 % 953.7 MiB / 953.7 MiB = 1.000 48 MiB/s 0:19 Command being timed: "xz --verbose --stdout --decompress ./dummy_file.dat.xz" User time (seconds): 3.61 System time (seconds): 1.42 Percent of CPU this job got: 25% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:19.82 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 67684 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 15 Minor (reclaiming a frame) page faults: 16486 Voluntary context switches: 2684 Involuntary context switches: 50 Swaps: 0 File system inputs: 1954184 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ ls --time-style=+%H:%M --all --format=long ./dummy_file.dat ./dummy_file.dat.xz -rw-r--r-- 1 u00 u00 1000000000 14:08 ./dummy_file.dat -rw-r--r-- 1 u00 u00 1000049572 15:04 ./dummy_file.dat.xz
元ファイルの内容が十分にランダムなので、圧縮されることはないわけだけど、生成されたファイルは以下。
$ ls --time-style=+%H:%M --all --format=long ./dummy_file.dat ./dummy_file.dat.bz ./dummy_file.dat.gz ./dummy_file.dat.xz -rw-r--r-- 1 u00 u00 1000000000 14:08 ./dummy_file.dat -rw-r--r-- 1 u00 u00 1004435202 14:28 ./dummy_file.dat.bz -rw-r--r-- 1 u00 u00 1000161997 14:11 ./dummy_file.dat.gz -rw-r--r-- 1 u00 u00 1000049572 15:04 ./dummy_file.dat.xz
コマンド | サイズ (bytes) | 圧縮 | 展開 | 圧縮展開時間比 | |||
---|---|---|---|---|---|---|---|
率 (%) | 時間 (sec) | 速度 (bytes/sec) | 時間 (sec) | 速度 (bytes/sec) | |||
xz --best | 1000049572 | 100.00 | 930.47 | 53.27 | 3.61 | 13731.85 | 257.74 |
bzip2 --best | 1004435202 | 100.44 | 474.61 | 9344.94 | 173.11 | 25620.71 | 2.74 |
gzip --best | 1000161997 | 100.01 | 79.57 | 2035.90 | 12.38 | 13085.37 | 6.42 |
cvs ファイルの場合
適当に同じような内容が連続するファイルとして CSV ファイルをテストに使ってみた。1GB のダミーファイルを作成
$ dd if=/usr/share/mecab/dic/unidic/lex.csv of=./dummy_file.dat.tmp count=100 bs=1000000 100+0 records in 100+0 records out 100000000 bytes (100 MB) copied, 1.99075 s, 50.2 MB/s $ cat ./dummy_file.dat.tmp > ./dummy_file.dat $ cat ./dummy_file.dat.tmp >> ./dummy_file.dat $ cat ./dummy_file.dat.tmp >> ./dummy_file.dat $ cat ./dummy_file.dat.tmp >> ./dummy_file.dat $ cat ./dummy_file.dat.tmp >> ./dummy_file.dat $ cat ./dummy_file.dat.tmp >> ./dummy_file.dat $ cat ./dummy_file.dat.tmp >> ./dummy_file.dat $ cat ./dummy_file.dat.tmp >> ./dummy_file.dat $ cat ./dummy_file.dat.tmp >> ./dummy_file.dat $ cat ./dummy_file.dat.tmp >> ./dummy_file.dat
gzip で圧縮展開。時間は time で計測。圧縮展開の結果は /dev/null に捨てる
$ time --verbose gzip --verbose --stdout --best ./dummy_file.dat > /dev/null ./dummy_file.dat: 91.0% Command being timed: "gzip --verbose --stdout --best ./dummy_file.dat" User time (seconds): 143.88 System time (seconds): 1.36 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 2:26.58 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1844 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 1 Minor (reclaiming a frame) page faults: 148 Voluntary context switches: 149 Involuntary context switches: 690 Swaps: 0 File system inputs: 1898208 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose gzip --verbose --stdout --best ./dummy_file.dat > ./dummy_file.dat.gz ./dummy_file.dat: 91.0% Command being timed: "gzip --verbose --stdout --best ./dummy_file.dat" User time (seconds): 134.52 System time (seconds): 1.69 Percent of CPU this job got: 97% Elapsed (wall clock) time (h:mm:ss or m:ss): 2:20.34 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1848 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 1 Minor (reclaiming a frame) page faults: 148 Voluntary context switches: 181 Involuntary context switches: 520 Swaps: 0 File system inputs: 1898208 File system outputs: 175840 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose gzip --verbose --stdout --decompress ./dummy_file.dat.gz > /dev/null ./dummy_file.dat.gz: 91.0% Command being timed: "gzip --verbose --stdout --decompress ./dummy_file.dat.gz" User time (seconds): 9.49 System time (seconds): 0.10 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:09.69 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1756 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 1 Minor (reclaiming a frame) page faults: 99 Voluntary context switches: 14 Involuntary context switches: 74 Swaps: 0 File system inputs: 79872 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 + ls --time-style=+%H:%M --all --format=long ./dummy_file.dat ./dummy_file.dat.gz -rw-r--r-- 1 u00 u00 1000000000 16:45 ./dummy_file.dat -rw-r--r-- 1 u00 u00 90027408 16:50 ./dummy_file.dat.gz
bzip2 で圧縮展開。時間は time で計測。圧縮展開の結果は /dev/null に捨てる
$ time --verbose bzip2 --verbose --stdout --best ./dummy_file.dat > /dev/null ./dummy_file.dat: 13.852:1, 0.578 bits/byte, 92.78% saved, 1000000000 in, 72192757 out. Command being timed: "bzip2 --verbose --stdout --best ./dummy_file.dat" User time (seconds): 250.11 System time (seconds): 1.43 Percent of CPU this job got: 95% Elapsed (wall clock) time (h:mm:ss or m:ss): 4:23.11 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 7668 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 2 Minor (reclaiming a frame) page faults: 1692 Voluntary context switches: 1890 Involuntary context switches: 1807 Swaps: 0 File system inputs: 1898384 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose bzip2 --verbose --stdout --best ./dummy_file.dat > ./dummy_file.dat.bz ./dummy_file.dat: 13.852:1, 0.578 bits/byte, 92.78% saved, 1000000000 in, 72192757 out. Command being timed: "bzip2 --verbose --stdout --best ./dummy_file.dat" User time (seconds): 259.72 System time (seconds): 1.88 Percent of CPU this job got: 96% Elapsed (wall clock) time (h:mm:ss or m:ss): 4:31.72 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 7624 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 2 Minor (reclaiming a frame) page faults: 1692 Voluntary context switches: 1787 Involuntary context switches: 1385 Swaps: 0 File system inputs: 1898232 File system outputs: 141008 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose bzip2 --verbose --stdout --decompress ./dummy_file.dat.bz > /dev.null ./dummy_file.dat.bz: done Command being timed: "bzip2 --verbose --stdout --decompress ./dummy_file.dat.bz" User time (seconds): 37.68 System time (seconds): 0.26 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:37.98 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 4668 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 2 Minor (reclaiming a frame) page faults: 966 Voluntary context switches: 4 Involuntary context switches: 158 Swaps: 0 File system inputs: 71968 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ ls --time-style=+%H:%M --all --format=long ./dummy_file.dat ./dummy_file.dat.bz -rw-r--r-- 1 u00 u00 1000000000 16:45 ./dummy_file.dat -rw-r--r-- 1 u00 u00 72192757 16:59 ./dummy_file.dat.bz
xz で圧縮展開。時間は time で計測。圧縮展開の結果は /dev/null に捨てる
$ time --verbose xz --verbose --stdout --best ./dummy_file.dat > /dev/null ./dummy_file.dat (1/1) 100 % 59.6 MiB / 953.7 MiB = 0.062 870 KiB/s 18:42 Command being timed: "xz --verbose --stdout --best ./dummy_file.dat" User time (seconds): 1117.20 System time (seconds): 2.90 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 18:42.47 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 691008 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 172413 Voluntary context switches: 227 Involuntary context switches: 7043 Swaps: 0 File system inputs: 1954928 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose xz --verbose --stdout --best ./dummy_file.dat > ./dummy_file.dat.xz ./dummy_file.dat (1/1) 100 % 59.6 MiB / 953.7 MiB = 0.062 981 KiB/s 16:35 Command being timed: "xz --verbose --stdout --best ./dummy_file.dat" User time (seconds): 992.17 System time (seconds): 3.07 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 16:35.98 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 691200 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 3 Minor (reclaiming a frame) page faults: 172411 Voluntary context switches: 81 Involuntary context switches: 3605 Swaps: 0 File system inputs: 1953200 File system outputs: 121992 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ time --verbose xz --verbose --stdout --decompress ./dummy_file.dat.xz > /dev/null ./dummy_file.dat.xz (1/1) 100 % 59.6 MiB / 953.7 MiB = 0.062 80 MiB/s 0:11 Command being timed: "xz --verbose --stdout --decompress ./dummy_file.dat.xz" User time (seconds): 11.64 System time (seconds): 0.23 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:11.92 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 67632 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 3 Minor (reclaiming a frame) page faults: 16502 Voluntary context switches: 6 Involuntary context switches: 38 Swaps: 0 File system inputs: 113992 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ ls --time-style=+%H:%M --all --format=long ./dummy_file.dat ./dummy_file.dat.xz -rw-r--r-- 1 u00 u00 1000000000 16:45 ./dummy_file.dat -rw-r--r-- 1 u00 u00 62456252 17:35 ./dummy_file.dat.xz
$ ls --time-style=+%H:%M --all --format=long ./dummy_file.dat ./dummy_file.dat.bz ./dummy_file.dat.gz ./dummy_file.dat.tmp ./dummy_file.dat.xz -rw-r--r-- 1 u00 u00 1000000000 16:45 ./dummy_file.dat -rw-r--r-- 1 u00 u00 72192757 16:59 ./dummy_file.dat.bz -rw-r--r-- 1 u00 u00 90027408 16:50 ./dummy_file.dat.gz -rw-r--r-- 1 u00 u00 100000000 16:45 ./dummy_file.dat.tmp -rw-r--r-- 1 u00 u00 62456252 17:35 ./dummy_file.dat.xz
コマンド | サイズ | 圧縮 | 展開 | 圧縮展開時間比 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
率 | 時間 | 速度 | 時間 | 速度 | |||||||||
(bytes) | (%) | /gzip (-) | (sec) | /gzip (-) | (bytes/sec) | /gzip (-) | (sec) | /gzip (-) | (bytes/sec) | /gzip (-) | (-) | /gzip (-) | |
xz --best | 62456252 | 6.24 | 0.69 | 1117.20 | 7.76 | -839190.60 | 0.13 | 11.64 | 1.22 | 80544995.53 | 0.83 | 95.97 | 6.33 |
bzip2 --best | 72192757 | 7.21 | 0.80 | 250.11 | 1.73 | -3709596.74 | 0.58 | 37.68 | 3.97 | 24623334.47 | 0.25 | 6.63 | 0.43 |
gzip --best | 90027408 | 9.00 | 1.00 | 143.88 | 1.00 | -6324524.54 | 1.00 | 9.49 | 1.00 | 95887522.86 | 1.00 | 15.16 | 1.00 |