您的位置:首页 > 其它

diff winmerge 文件对比算法实践

2008-07-18 14:50 330 查看
参考文章:

http://www.2maomao.com/blog/how-windiff-works-continued-1/

http://www.computerhope.com/fchlp.htm

http://www.ascotti.org/programming/lcs/lcs.htm

http://ftp.gnu.org/pub/gnu/diffutils/

http://svn.collab.net/repos/svn/trunk/subversion/libsvn_diff/lcs.c

http://webtools.live2support.com/windows/fc.php

http://c2.com/cgi/wiki?DiffAlgorithm

http://en.wikipedia.org/wiki/Diff#See_also

http://www.codeproject.com/KB/recipes/vdiff.aspx

http://www.codeproject.com/KB/recipes/diffengine.aspx

http://code.google.com/p/google-diff-match-patch/wiki/API

http://www.angusj.com/delphi/

http://www.mathertel.de/Diff/ViewSrc.aspx

其中字体为绿色的效率比较高。

下面是自己写的bcb代码。

根据http://www.codeproject.com/KB/recipes/vdiff.aspx写的:

http://download.csdn.net/source/541639

根据http://www.mathertel.de/Diff/ViewSrc.aspx写的:

http://download.csdn.net/source/541646

但是以上两种算法在测试10万行代码比较的时候,需要10分钟左右的时间才行,和windows自带的fc命令,winmerge相比,效率太低。

下面介绍一下fc得用法:

time

fc /L /T /N /A 11111.txt 22222.txt > newresult.txt
time

pause

具体可以参见:http://webtools.live2support.com/windows/fc.php或者微软的帮助,
但是这个命令也有问题,比如对比以下两个文件的时候,就有误差。
file1.txt
─────────────────────
void func(){

if(1){
}
if(1){
}

}

void func2(){

if(1){
}
if(1){
}

}

file2.txt
─────────────────────
void func()
{

if(1)
{
}
if(1)
{
}

}

void func2()
{

if(1)
{
}
if(1)
{
}

}

如果是用代码整形的话,比如astyle这样的工具的话,参见:http://download.csdn.net/source/541885
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: