其他部门提供一个全量的文件。
每天都会按照日期新生成一个实体标注标签文件,如 entity_tag_20220801.txt
。其中 20220801 是每一天的生成日期。
V1 基本思路
直接遍历全量的文件。
发现性能比较差,要跑很久才能完成。
V2 多线程
使用多线程
性能基本可以接受,但是数据库压力还是比较大的。
V3 文件差异
结合业务,其实一般情况下,实体的标准信息,并不会轻易的变化。
那么,只处理差异的部分显然性能会更好。
其他部门提供一个全量的文件。
每天都会按照日期新生成一个实体标注标签文件,如 entity_tag_20220801.txt
。其中 20220801 是每一天的生成日期。
直接遍历全量的文件。
发现性能比较差,要跑很久才能完成。
使用多线程
性能基本可以接受,但是数据库压力还是比较大的。
结合业务,其实一般情况下,实体的标准信息,并不会轻易的变化。
那么,只处理差异的部分显然性能会更好。
自动识别文件的两个版本之间的差异是采矿代码存储库的几个应用程序中的常见和基本任务。
GIT是一种版本控制系统,具有差异实用程序,用户可以选择从默认算法Myers到高级直方图算法的差异算法。
从我们的系统映射中,我们在最近的研究中确定了DIFF的三个流行应用。
关于14个Java项目中代码流失指标的影响,我们根据不同的差异算法获得了1.7%至8.2%的不同值。
关于错误引入的变更识别,我们发现已确定的错误框架提交中有6.0%和13.3%的介绍在10个Java项目中的错误引入更改的结果不同。
对于补丁应用程序,我们发现直方图比迈尔斯更适合通过手动分析提供代码的更改。
举一个最常见的例子,我们使用git进行提交时,通常会使用 git diff --cached
来查看这次提交做了哪些改动,这里我们先简单定义一下什么是diff:
diff就是目标文本和源文本之间的区别,也就是将源文本变成目标文本所需要的操作。
在 Git 中,有四种diff算法,分别是Myers、Minimal、Patience和Histogram,它们用于获取位于两个不同提交中的两个相同文件的差异。
Myers算法由Eugene W.Myers在1986年发表的一篇论文中提出,是一个能在大部分情况产生”最短的直观的“diff的一个算法。