問題タブ [binary-diff]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2024 参照

patch - この小さなファイルで bsdiff.exe が問題を起こすのはなぜですか?

bsdiff.exe を使用してソフトウェア パッチを作成し、それを bspatch.exe で適用していますが、これまでのところ 120 MB 未満のファイルで問題は発生していません。私が持っている 1 つのバイナリ ファイルは、以前は 21MB でしたが、現在は 77MB で、bsdiff が無期限にハングしているようです。

ドキュメントによると、「bsdiff はかなりメモリを消費します。最大 (17*n,9*n+m)+O(1) バイトのメモリが必要です。n は古いファイルのサイズ、m はサイズです。新しいファイルの。」これは大きなファイルの問題を説明していますが、デルタが大きくなると問題が発生するようです。

誰もこれに関する情報を持っていますか? 何でも役に立ちます、ありがとう!

0 投票する
1 に答える
2271 参照

git - Git とバイナリ データ、最適な保存方法

いくつかのバイナリ ファイルを git に保存しなければならないという不幸な状況にありますが、

ただし、データをディスクに保存する方法を選択できます-Git(ビルドシステムのみが読み取る必要がある独自の形式)。

それほど重要だとは思わないので、詳細についてはあまり話したくありませんが、いくつかのコンテキストを示すために、これらは多くのアイコンファイルですが、同じ質問が多くの小さなサウンドファイルまたは 3d モデルにも当てはまります。

これらのファイルを 1 つの大きなイメージに変換することはビルド ステップであるため、イメージは任意の方法で git に保存できます。

  • バイナリ圧縮(例:PNG(画像)、FLAC(音声))
  • バイナリ非圧縮 (例: PPM (画像)、非圧縮-WAV (音声))
  • バイナリ データの ASCII 表現 (例: MIME エンコード、XPM (画像))

一部のファイルがときどき変更されると仮定しましょう。そのため、ピクセルへの小さな変更ごとに新しいバイナリ BLOB を保存しないようにするとよいでしょう。

私は知りたいです:

  • バイナリ ファイルが変更されるたびに (数バイトであっても)、まったく新しいバイナリ blob を格納するオプションはどれですか。
  • git diff は圧縮されていないバイナリ データよりも優れていますか?
  • ファイルの一部のみが定期的に変更されると仮定すると、大きなバイナリ ファイルへの小さな変更を git で効率的に処理できますか?

バイナリファイルの使用を完全に回避できないと仮定して、大きなgitリポジトリを回避するための最良のオプションは何ですか(バイナリファイルに対して編集が行われるため)、すべてのことを考慮しましたか?

0 投票する
2 に答える
116 参照

binary - バイナリーの違いを定量的に評価するには?

VBinDiff などのバイナリ差分ツールをいくつか知っています。

現在、私は多数のバイナリを持っており、約 500 です。

そこでバイナリの違いを定量的に評価するバイナリツールを探しています。

同様に、バイナリ 10 とバイナリ 100 の差は 56% であると評価します。バイナリ 50 とバイナリ 200 の差は 78% です。

このようなツールはありますか?ELF、体育関係どちらも大歓迎です。

ありがとうございました!

0 投票する
4 に答える
2954 参照

android - Android APKファイル用のAndroid APK特別なバイナリ差分ツールはありますか?

更新時に apk ファイルのサイズを小さくしようとすると、bsdiffバイナリ パッチを作成し、クライアント側でパッチをマージするために使用することを提案する人がいます。しかし、これは一般的なバイナリ diff ツールであり、ファイルに対して機能し、より小さなパッチ ファイルを取得する Courgette を使用するのと同じように、より小さなパッチ ファイルを取得できると思いchromeます。exe

のようなツールはありますCourgetteか?そうでない場合、Google は私たち Android 開発者向けにそのようなツールを開発しないのはなぜですか?

0 投票する
1 に答える
760 参照

c++ - 遠隔地でテストするためのデバッグ情報のサイズを最小限に抑える

C++ プロジェクトのデバッグ情報をリモートの場所に転送してテストする方法を作成しようとしています。現在の開発サイクルでは、コードに小さな変更を加えると、バイナリ全体 (サイズは 100 MB で、ほとんどがデバッグ情報) を転送する必要があります。

現在、これに対処するための私のアプローチは、-gsplit-dwarf を使用してオブジェクト ファイルからデバッグ情報を分割し (デバッグ情報なしのサイズは私の接続で管理可能です)、現在実行中のビルドのコピーに対してデバッグ ファイルを比較することです。リモートボックス。

目的は、プロジェクトのデバッグ ファイル用の一連のパッチを用意して、新しいコードをリモート ロケーションでデバッグできるようにすることです。リモートの場所とローカル マシン間の接続は低速であるため、パッチのサイズを最小限に抑えることが最も重要ですが、ツールの実行時間とのバランスを取る必要もあります。可能性のある解決策として bsdiff と xdelta を調べたところ、xdetla は高速ですが大きすぎ、bsdiff はサイズの点で完璧ですが、実行時間とメモリ要件が希望よりも少し高いという難問に遭遇しました。

不足しているツールやアプローチはありますか、それとも間違った方法で進んでいますか? おそらくbsdiffとxdeltaに代わるものはありますか? gbdserver のようなツールは、実際のデバッグに関するいくつかの要件のために、この状況では機能しないことを私は知っています。bsdiff を変更すると、パフォーマンスが向上しますか? 実際、私が使用しているアプローチが適切である場合、ビルドのコピーをリモート マシンに保持して比較するための良い方法は何でしょうか。

0 投票する
2 に答える
1100 参照

multithreading - マルチスレッドのバイナリ差分ツール?

そこには多くのバイナリ差分ツールがあります:

等々。それらは優れていますが、1 つのスレッドです。大きなファイルをチャンクに分割し、チャンク間の差分を同時に見つけて、最終的なデルタにマージすることは可能ですか? 合理的な時間とRAMで非常に大きなファイル(数百Gb)間のデルタを見つけるための他のツール、ライブラリはありますか?アルゴリズムを自分で実装できるかもしれませんが、それに関する論文は見つかりません。