ソースコードのダウンロード
フォルダ内のファイルを、ISO9660/JOLIET/UDF イメージファイルにまとめるツール
「せんべえの生地作り」の修正版です。
変更点:
・ながえ氏に指摘された欠陥を修正。
欠陥を指摘してくださったながえ氏に厚く御礼申し上げます。
以下、苦しい弁明です。
要望については、結局反映しませんでした。
・OSTA Compressed Unicode の CompID 値に 8
→知っている方法で文字列が Shift-JIS で 8 バイト文字だけの場合、自動的に CompID を 8 にしてみたのですが、半角カナで文字化けしたため、元に戻しました。
・ボリュームラベルをシステムごとに個別に設定
今のフォルダ名とフォルダの日時がそのままボリュームラベルと作成日時になるシステムが気に入っているので、やめました。
・ファイル作成速度の向上
バイト表示をタイマで更新するようにしてみたのですが、どうでしょうか。
こちらでは、それほど変わっていませんorz
OS では、
・直前に使ったファイルはメモリに残っているとアクセスが速いので、同じファイルで比較すると2回目の方が速い。
・コピー動作は、実際の書き込みを後でバックグラウンドで行うこともあるので、見た目は速く終わる。
などの言い訳も考えられるのですが、私としては表示がこまめに更新されていたほうが安心するので、表示に伴う動作の遅れはあきらめています。
前回の記述は主観的なものだったので、実際どのくらい違うのかベンチマークみたいなことをしてみました
結果から先に言いますと、なんと20倍以上!!の高速化。向上するにも程があるw
七癖さんのところではそれほど変わらなかったということですが、おかしいなぁ、、、うちのグラボが腐っているのか、それともOSの違い?
【ベンチマーク】
[内容] 下記項目の開始から終了までの時間を計測
・せんべえ焼き各バージョンのISOイメージ作成
・エクスプローラでのファイルコピー
・拙作ファイルバイナリ切り出しアプリ
[測定方法]
・各アプリの作業速度に関しては、結果ファイルの作成日時と更新日時の差から算出(1/100秒以下四捨五入)
・エクスプローラのファイルコピーについては、コピー開始からダイアログが消えるまでの時間をストップウォッチにて測定(精度:1/10秒)
・ISOイメージ用に1GB(1,073,741,824Bytes)のテストファイルを拙作ファイルバイナリ切り出しアプリにて作成、
・元データ用ドライブにテスト用フォルダを作成してそこにテストファイルを設置
・テスト用フォルダをイメージ作成元に指定してせんべえの生地作りを実行
[測定環境]
・OS:WindowsXP pro SP3
・CPU:Core2Duo E7600@3.06GHz
・メモリ:4GB搭載、認識してるのはまぁ3Gそこそこ?
・作業用HDD:1.5GB オンボードSATA接続、多分5400rpm、×2 (1万円前後のありふれたものです)
・M/B:Asus P5Q(P45/ICH10R)
・G/B:Leadtek PX9500GT (GeForce9500GT/PCI-Ex2.0)
・BIOSなどは基本的にデフォルト設定のままです
・元ファイルと結果ファイルはそれぞれ別々の物理ドライブに設定。
・結果用HDDはフォーマット直後のものを使用、元データ用のものはそこそこ使い込んでいるのでフラグメンテーションも結構あるかと。
・それぞれシステムとも違うドライブとし、テスト中は他からのアクセスが無いようにしました
・テスト中は両方のドライブともに回転させっぱなし
[測定作業順序と結果]
(元ファイルのデータがあるドライブをHDD1(使い込んだHDD)、結果用HDDをHDD2(綺麗なHDD)とします)
1.HDD1 → HDD2 : 元データ用バイナリファイル切り出し *1
15.52秒
2.HDD1 ← HDD2 : エクスプローラにてファイルコピー(元データ用フォルダに)
15.9秒
3.HDD1 → HDD2 : エクスプローラにてファイルコピー(リファレンス)
13.1秒
4.HDD1 → HDD2 : せんべえの生地作り海賊版(表示抹殺ver)にてISOファイル作成 *2
13.95秒
5.HDD1 → HDD2 : せんべえの生地作り海賊版(1%毎に表示更新ver)にてISOファイル作成
13.19秒
6.HDD1 → HDD2 : せんべえの生地作りver.0.005にてISOファイル作成
5分17.06秒
7.HDD1 → HDD2 : せんべえの生地作りver.0.006にてISOファイル作成
14.64秒
*1 4GB程度のファイルから1,073,741,824Bytesのファイルを切り出し
*2 せんべえの生地作りの設定はすべて無変更(ファイルシステム=Joliet)
[結論]
ver.0.005以外はどれも似たり寄ったりの結果ですが、ver.0.005のみ桁違いな時間が。。。
プログレスバーの進み具合の差も、体感できるとかいうレベルを遥かに超えていました(^^;
追.
前回の「4,5倍程度」というのは、同じドライブ内にISOを作成させた時の「なんとなくそれくらいかな?」という数字でした
CompID=8 というのは、あくまで ASCII文字のみが対象となっているのだと思います。
半角カナをUTF-16に変換した場合、下位バイトの多くがASCIIと重複しますので、文字化けしてしまうのは当然かと。
OSTA Compressed Unicode を独自に拡張してしまえば、半角カナも文字化けさせないで CompID=8 で格納できるようになりますが、そんなことしても世間一般には通用しませんし(^^;
そもそも、OSTA Compressed なんてものはASCIIだけで用が足りる人種が、UTF-16の使用により無駄にデータが倍増してしまうのに我慢できなくてヒネくりだしたものだと思います(^^)
ISO9660::PVD/SVD/EVD.AbstractFileIdentifier
ISO9660::PVD/SVD/EVD.BibliographicFileIdentifier
これらも「ルートディレクトリに存在し、このボリュームセットの××についての記載があるファイルの識別子」
ということらしいですから。
ちなみに
UDF1.02::FSD.CopyrightFileIdentifier
UDF1.02::FSD.AbstractFileIdentifier
の二つも、ボリュームセットではなく「ファイルセットの××について」という違いはありますが実質同じものなので、こちらにも反映させた方が統一感がある?
・DVD-VIDEOモードでのイメージ作成
ISOファイル内のファイルデータの格納順序(セクタ配列)は、ディレクトリ階層→ディレクトリ名ソート順→ファイル名ソート順となっているかと思いますが
DVD-VIDEOの規格では、ファイルのセクタ配列が
1 VIDEO_TS.IFO
2 VIDEO_TS.VOB
3 VIDEO_TS.BUP
4 VTS_01_0.IFO
5 VTS_01_0.VOB
6 VTS_01_1.VOB
:
X VTS_01_N.VOB
Y VTS_01_0.BUP
Z VTS_02_0.IFO
:
という感じで IFO→VOB→BUP という順序になっているようです。
具体的には、各IFOファイルに以下のセクタ位置情報が記入されており、
これらはすべて、上記の順序でファイルが格納されている場合に適合するようになっています。
VIDEO_TS.IFO::000C-000F = VIDEO_TS.BUP の終了セクタの VIDEO_TS.IFO先頭からの相対位置
VIDEO_TS.IFO::001C-001F = VIDEO_TS.IFO の終了セクタの VIDEO_TS.IFO先頭からの相対位置
VIDEO_TS.IFO::00C0-00C3 = VIDEO_TS.VOB の開始セクタの VIDEO_TS.IFO先頭からの相対位置
VTS_xx_0.IFO::000C-000F = VTS_xx_0.BUP の終了セクタの VTS_xx_0.IFO先頭からの相対位置
VTS_xx_0.IFO::001C-001F = VTS_xx_0.IFO の終了セクタの VTS_xx_0.IFO先頭からの相対位置
VTS_xx_0.IFO::00C0-00C3 = VTS_xx_0.VOB の開始セクタの VTS_xx_0.IFO先頭からの相対位置
VTS_xx_0.IFO::00C4-00C7 = VTS_xx_1.VOB の開始セクタの VTS_xx_0.IFO先頭からの相対位置
VIDEO_TS.IFO内にあるTT_SRPTという構造体にも、各VTS_xx_0.IFOの開始セクタの VIDEO_TS.IFO先頭からの相対位置
ところが、ファイル名ソート順だと BUP→IFO→VOB という順番になってしまい、IFOファイル内に記述されているセクタ位置と矛盾が生じてしまいます。
実際のプレーヤでは、IFOファイルの情報は無視してファイルシステムからファイルを読み取っているようなので問題にはなりませんが、やはりちょっと気分的に。。。
(尤も、VTS_xx_1.VOB 〜 VTS_xx_N.VOB だけは、番号順、かつ隙間なく配列されていないと再生に支障が生じそうです。)
ちなみに、「ImgTool Classic」ではIFOファイルの情報からセクタ配置を決定しているようで、
IFOとVOBの間に間隙が生じてしまうような情報が記入されていても、その情報通りにファイルを配列しています。
いまのところ、DVD-VIDEO に深入りするのはやめておきます。
「せんべえの生地作り」は、ただフォルダをイメージにまとめるだけのツール、ということで。