difflib.js ---- 用于生成 diff 信息的 node 模块
发布于 13 年前 作者 xqunix 14941 次预览 最后一次回复是 10 年前 来自
一直找不到好用的 diff 模块,于是花了两天的时间将 Python 标准库中的 difflib 移植到了 JavaScript 上。做了详尽的测试,同时也将原文档也按照 JavaScript 的风格修改了。希望能对各位有用 :)
14 回复
一直找不到好用的 diff 模块,于是花了两天的时间将 Python 标准库中的 difflib 移植到了 JavaScript 上。做了详尽的测试,同时也将原文档也按照 JavaScript 的风格修改了。希望能对各位有用 :)
可以用来比较两篇文章的相似性吗?
这个不错。
哇
可以,
SequenceMatcher对象有 ratio() 这个方法,可以用于计算相似度。@xqunix cool
@xqunix 請問相似度比較是用的什麼算法?
@guilin Ratcliff-Obershelp 算法
@xqunix 用了一下,速度有点慢啊
@guilin 数据有多少呢?
@xqunix 一个html,我替换了所有的link, 然后做diff
cool
@guilin 确定瓶颈是在 diff 上么,我刚才拿 sina 的主页做了下 benchmark,总共 10244 行 html, 我复制一份并修改其中的10行,然后分别用 python 和 node 跑了100 遍 diff,代码如下:
node:
python:
测试结果如下:
可见,对于 sina 的这个 10000+ 行的巨型 html ,平均每个 diff 的耗时也仅为 0.06 秒,而且在这个测试中 node 的性能要优于 python 。另外值得注意的是, python 的 difflib 从 2001 年开始便是标准库之一,其代码质量和性能都绝对有所保证。
@xqunix 我再测一遍,也可能是我的代码有问题
挖出来~~