多数の小さな文字列の単語差分を表示する必要があります。
つまり、次のようなペアのリストがあります。
"aaa bbb ccc" . "aaa vv ccc"
"abcd ef ghkl" . "ghkl"
"a (u -> h)" . "(a -> g) (u -> h)"
どちらの場合も、変更または追加されたテキストを強調表示します。diffコマンドを何度も呼び出すことでこれを行うことができますが、そのコストを恐れています。
この目的に使用できるelispライブラリはありますか?
コンパイルされたdiffコマンドを実際に呼び出してみましたか?コストは、コンパイル済みのcコードからelispに移行するときに失う速度よりも低い場合があります。
—
Tyler
@タイラー私はコストを比較するものがないので、持っていません。
—
クレメント2016年
いいえ、でも、それがすでに十分に速いことが判明した場合は、それを他のものと比較する必要はありません
—
タイラー
コストは正しい言葉ではなかったかもしれません。パフォーマンスを超えて、私は他の側面に興味があります。lispソリューションはより堅牢で(たとえば、Windowsユーザーは必ずしもdiffがインストールされている必要はありません)、おそらくメンテナンスがより簡単です。AFAIK diffにはファイルが必要なので、各ペアに2つのファイルを書き込む必要があります。これは、100ペアのリストを比較するための読み取りと書き込みの200サイクルです。他に選択肢がない限り、本当にそうしたくありません。
—
クレメント2016年
diffへのwdiffフロントエンドはこれを行います。ファイルを明示的に書き込む必要はありません:
—
Tyler
wdiff <(echo "abc def ghi" ) <(echo "abc ghi")
=> abc [-def-] ghi
。しかし、それはwdiffとdiffutilsがインストールされているかどうかに依存します。これは、Windowsで一般的な使用のために何かを構築する場合には役に立ちません。そのため、elispソリューションが必要だと思います。