参考文章:
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.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
timepause
具体可以参见:http://webtools.live2support.com/windows/fc.php或者微软的帮助,
但是这个命令也有问题,比如对比以下两个文件的时候,就有误差。
file1.txt
─────────────────────
void func(){
}
if(1){
}
}
void func2(){
}
if(1){
}
}
file2.txt
─────────────────────
void func()
{
{
}
if(1)
{
}
}
void func2()
{
{
}
if(1)
{
}
}
如果是用代码整形的话,比如astyle这样的工具的话,参见:http://download.csdn.net/source/541885