Linux系OSのファイル圧縮、解凍のコマンドの
"zip"コマンドや、"unzip"コマンドは何故一瞬で圧縮&解凍が完了するのでしょうか?
同じLinuxでGUI(対象ファイルを右クリックから)から操作した場合やWindowsで同じ容量のファイルをフリーのツールで圧縮&解凍した場合と比べると
上記のコマンドを使った方が何倍も早く圧縮&解凍が完了しているようです。
GUIからの操作やWindowsのツールとLinuxのコマンドでの圧縮&解凍アルゴリズムで大きな違いがあるのでしょうか?
どなたか詳しい方がいらっしゃいましたらご解答お願いいたします。
No.3ベストアンサー
- 回答日時:
圧縮&解凍のアルゴリズム自体は同じです。
ディスクアクセスがどうこうということもあるかとは思いますが、
それよりもGUIでの操作だと、圧縮解凍と作業は直接関係ない、進行状況を視覚的に表すダイアログやウインドの描画処理が加わります。
ウインド描画したり、プログレスバー(進行状況表す棒グラフのようなの)とか表示するのにパワーを消費するので、その分だけ遅くなります。
CUIなら、ターミナル上に文字表示するだけの非常に単調な作業です。
複雑な画面描画が不要なCUIだけなら十年以上前の非力なマシンでも十分実用的な速度で扱えます。
実はCUIでのunzipコマンドでも、オプションで途中経過を表示/非表示にするとその分だけ処理速度変わります。
コンマ何秒の気付かないレベルですが。
Terminal上で
unzip hoge.zip(進行状況を表示する)
unzip -q hoge.zip(進行状況を表示しない)
をtimeコマンド使って実行時間比べると約2倍の差がありました。
ただテキスト表示するかしないかの違いで。
ご回答ありがとうございます。
検証までして頂いてありがとうございます。
目的である圧縮&解凍より描画処理の方に大きく時間がかかるって微妙ですね。
CUIでオプション"-q"をつけるだけで2倍の処理時間ですか!!
う~~ん。
そう考えると圧縮&解凍の処理自体はもの凄く高速なんですね。
この辺のアルゴリズムに関するドキュメントは豊富なのでいつか目を通してしてみたいです。
ありがとうございました。
No.4
- 回答日時:
>「なるほどLinuxは処理が完了したのを確認してないんですね。
」http://kotobank.jp/word/遅延書き込み
「遅延書き込み」はWindowsでも行っています。
従って、書き込みが終わらない内に、メディアを抜いて
データを紛失するケースはWindowsでも発生します。
#むしろ、それを知らずに、無造作に扱う事が多いので
#危険です。
No.2
- 回答日時:
主に大きく違うのは「ディスクへの書き込み」でしょう.
Windows ではカーネルが「ちゃんとディスクに書き込んだ」ことを確認していますが, Linux のカーネルは (デフォルトでは) そこまでやっていません. ディスクバッファにデータを書き込み終わった時点でディスクに書き込んだ「ことにする」という処理を取っています (バッファの内容は, 暇なときにディスクにゆっくり書き込む).
つまり, Windows ではディスクへの書き込みにかかる時間も処理時間に入っているのに対し, Linux (のコマンド) ではディスクへの書き込み時間が処理時間に入っていないものと思われます. Linux の GUI ツールでは書き込みまで処理時間に入ってるんじゃないかな.
Linux がディスクへの書き込みを「さぼることがある」ということは, 別の質問からも見ることができます. 1つの例を参考に挙げておきますが, USB2.0 で 100MB/s に達する転送速度はありえません.
一応 Windows の擁護もしておくと, これは Windows と Linux の来歴にも依拠していると思われます. Windows のもとは MS-DOS で, これはフロッピーディスクを対象としていたので「実行が終わったのでフロッピーディスクを引っこ抜く」利用者に対応する必要があります. そのための最善な方法は「確実にディスクに書き込んでからコマンドの実行を終了する」というものです. 一方 Linux は Unix クローンのようなものが念頭にあるので, 「記憶装置を利用者が勝手に引っこ抜く」ことは想定していません. ですから「とりあえず書きこみたいデータをバッファにためておき, 暇なときにディスクに書き込む」という戦略が取れます. GUI で Windows と同じような方法になっているのは, 「USB メモリを引っこ抜く利用者対策」とかじゃないかなぁ.
参考URL:http://oshiete1.goo.ne.jp/qa5700157.html
ご回答ありがとうございます。
やはり圧縮&解凍のアルゴリズムなどではなくディスクアクセスがボトルネックのようですね。
なるほどLinuxは処理が完了したのを確認してないんですね。
確かに大きなサイズのファイルをコンソールから圧縮&解凍した時に『本当に終わったのか?』と少し不安になってました。
お陰様で理解が深まりました。ありがとうございます。
No.1
- 回答日時:
はっきりいってやっていることそのものに関して違いはありません。
※一瞬で終わるといっても、プロンプトが戻ってくるだけで、
戻ってきた直後はまだ終了していない事があります。
windowsで、winrarを使ってあるファイル(gzip)を解凍したとしましょう。
テンポラリにいったん作成されてから、元に戻しています。
解凍そのものではなく、HDDへのアクセスがボトルネックになっている
ようです(また、CRCチェッカも走っていますので、そこも低下の原因かな)
linuxであるファイル(tar.gz)を展開したとしましょう。
gzipで解凍した後に、tar(無圧縮)で展開します。
gzipの解凍は、そのカレントに作成します。
やってみればわかるのですが、tar -xvfz ではなく、
gzip -d ...の後にtar -xvf...としても同じ事なのですが、
gzip -dの後にはtarファイルしか残りません。
しかしながら、GUIで操作した際には、windowsと同じことが
起こりえます。テンポラリに一回作成するからです。
linuxのtarコマンドを使用してみればわかるでしょう。
tarは無圧縮です。
例えば1万ファイルをtarで固めようとすれば、結構な時間がかかります。これは、ディスクアクセス及びファイルシステム上のボトルネックからくるものです。
同様に、windowsのソフトでzip無圧縮を作成しても結構な時間がかかります。
最近のコンピュータは性能が良いので、zip/gzipあたりでは、かなり早く圧縮・展開処理が終了します。しかしながら、それにディスクアクセスが追い付いていない状況が多々あります。
そのボトルネックを1度ですませるか2度・3度で済ませるかに
よって速度が変わるのです。
詳細なご回答ありがとうございます。
プロンプトが戻ってきても終了してない可能性があるんですね!
今までのケースでは即座に処理されていた(?)ようですが『そういう事もありそうだな』と思ってました。
なるほどテンポラリ作成時のディスクアクセスが処理速度に大きく関わってくるんですね。
ありがとうございます。参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
tarコマンドの処理が遅い
UNIX・Linux
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dirコマンドでフォルダ内ファイ...
-
ファイル名についている「-」と...
-
ピクチャクリッピングのファイ...
-
ラズパイで『’test.service’をs...
-
コマンドプロンプト dir でのソ...
-
数字を複数回繰り返す正規表現...
-
oracleの文字コードとlinuxサー...
-
vimでの警告(読込専用ファイル...
-
ZIPファイルの作成をコマンドか...
-
lsでは一画面ずつ表示できませ...
-
ファイル名一覧の印刷
-
テキストファイルから最終行の抽出
-
DVDの中身を確認したい
-
DOSコマンドのFOR文で空白を含...
-
knoppix内の操作による削除ファ...
-
fasta形式のファイルのまとめ方...
-
ごみ箱に入れるWindows コマン...
-
DUとLSの表示の差
-
作成日時でのファイル検索
-
SONYの音楽ソフト「x-アプリ」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dirコマンドでフォルダ内ファイ...
-
ファイル名についている「-」と...
-
ラズパイで『’test.service’をs...
-
テキストファイルから最終行の抽出
-
DOSコマンドのFOR文で空白を含...
-
DOS コマンドの~zfの意味を教え...
-
ファイル名一覧の印刷
-
数字を複数回繰り返す正規表現...
-
xcopyのエラー情報のはき...
-
Linuxで標準出力したファイルの...
-
oracleの文字コードとlinuxサー...
-
batファイルの強制終了を回避し...
-
コマンドプロンプト dir でのソ...
-
Windowsバッチファイルで、隠し...
-
ftpコマンドで丸ごとダウン...
-
ファイル編集について
-
作成日時でのファイル検索
-
特定の更新日付のファイルのみ...
-
ピクチャクリッピングのファイ...
-
ファイル名の -(ハイフン)を _(...
おすすめ情報