mstdn.anqou.net は、数々の独立したMastodonサーバーのうちのひとつです。サーバーに登録してFediverseのコミュニティに加わってみませんか。
わくわく鮟鱇ランドは、住民が皆わくわくしているマストドンです。登録は艮鮟鱇の知り合いに制限されています。

サーバーの情報

16
人のアクティブユーザー

こういう感じに高速に Zip アーカイブ作ってくれるくんが本当に他にないのか、かなり疑っています。

@tadd ありがとうございます!!! 多分中でやってること同じな気がするので勝てなさそうです(まだ動かしてませんが)

Ushitora Anqou

@tadd あ、一応誤解のないように説明しておくと、これは圧縮**しない** ZIP アーカイブならファイルの構造がすぐ確定するので並列でファイルがコピーできて速い、みたいな原理です。

@anqou なるほどなるほどー。逆方向の展開ツール(John the RipperのOMP版)ですが、ファイル構造からして並列化大変、みたいなコメントがありました。

@tadd そうなんですよね、ZIP のフォーマット的に、ファイルの一番うしろに central directory を持っていて、ファイルへのオフセットをいい感じに保存する必要があるので、並列にするのはかなり面倒そうです。

@anqou なるほど、リンカーぽい……?(Linkers & Loadersを読んでない人並の感想)

@tadd 実際めっちゃリンカーっぽいと思います(自分も Linkers&Loaders は読んでない)

@anqou 全く分かってなくて適当なことを言いますが、一番最後、というのがまだ救いな気がしました。もし個々をMapできればReduceのタイミングでできそうというか、Promise.allをawaitしたらフッタを書けそうというか。
やはりまったく分かっていない自分……

@tadd いえ、多分お察しの通りで、ファイル各々を並列で圧縮したあとなら各ファイルがどこに配置されるかわかるので、それを詰め込む(reduce する)だけでいいはずです。いま parzip の実装を読んでいたのですが、まさにそういう形の実装になっていそうで、ここで並列に圧縮して
github.com/jpakkane/parzip/blo
ファイルへの書き込み自体はここで直列になっていそうでした:
github.com/jpakkane/parzip/blo

今回自分が作ったのは圧縮の部分が無い代わりにファイルへの書き込みが並列になるという作りなので、(初めメンションをもらったときに同じ作りだと言ってしまいましたが)結構アイデアレベルで違う作りでした。

それはそれとして、この parzip の仕組みだと圧縮したファイルのデータをどこかに持っておかないといけない(一般的には RAM に乗りきらないのでファイルとかに書き出さないといけない?)はずで(そこまで読み込めていませんが)、inplace な実装は難しいだろうなぁみたいな雑な気持ちがあります。関連する話題としては、gzip で圧縮したファイルを zip ファイルに固めなおすときに解凍しなくていみたいな話があって、これもある意味並列で圧縮した gz ファイルをシリアルに zip に固め直すみたいな話と似たような話だなーとか考えています。(話にまとまりがなくてすいません)
knqyf263.hatenablog.com/entry/

High performance parallel pkzip implementation. Contribute to jpakkane/parzip development by creating an account on GitHub.
GitHubparzip/src/zipcreator.cpp at 8fa591e3ac8e2fcce0791b5494913f3bd7cde6a2 · jpakkane/parzipHigh performance parallel pkzip implementation. Contribute to jpakkane/parzip development by creating an account on GitHub.

@anqou なるほどなるほどー。ファイルの書き込みが並列に行けるの、いいですね。(固定ビットレートのMP3もきっとそう)
あとまとまりなくて全然OKです。こういうのむっちゃ好きです、楽しいですよね。一局面でも定番(や定番同士の連携)に一矢報いるの、かっこいいじゃないですか。好きな惣菜過ぎました。

@tadd ありがとうございます、そういってもらえるとめちゃ嬉しいです!

@anqou 書いてから気付いたのですが釈迦に説法感が……某御社の方も寄稿なさってました

@tadd いえいえ、以前から存在は知っていたんですけど予約するのを忘れていたので、さっき予約しました。