使用加密散列和bloom过滤器的匿名链接

anonlink的Python项目详细描述


安装

直接从pypi安装:

pip install anonlink

或从源安装:

pip install -r requirements.txt
pip install -e .
< H3>替代-手动编译C++库

对于Mac,具有:

g++ -std=c++11 -mssse3 -mpopcnt -O2 -Wall -pedantic -Wextra -dynamiclib -fpic -o _entitymatcher.dll dice_one_against_many.cpp

对于Linux,具有:

g++ -std=c++11 -mssse3 -mpopcnt -O2 -Wall -pedantic -Wextra -shared -fpic -o _entitymatcher.so dice_one_against_many.cpp

基准

您可以使用以下命令运行基准:

$ python -m anonlink.benchmark
Anonlink benchmark -- see README for explanation
------------------------------------------------
100000 x 1024 bit popcounts
Implementation              | Time (ms) | Bandwidth (MiB/s) | Throughput (1e6 popc/s)
Python (bitarray.count()):  |    17.78  |      686.54       |    5.62
Native code (no copy):      |     1.00  |    12243.76       |  100.30
Native code (w/ copy):      |   344.17  |       35.47       |    0.29 (99.7% copying)

Threshold: 0.5
Size 1 | Size 2 | Comparisons      | Total Time (s)          | Throughput
       |        |        (match %) | (comparisons / matching)|  (1e6 cmp/s)
-------+--------+------------------+-------------------------+-------------
  1000 |   1000 |    1e6  (50.20%) |  0.249  (88.6% / 11.4%) |     4.525
  2000 |   2000 |    4e6  (50.51%) |  1.069  (88.5% / 11.5%) |     4.227
  3000 |   3000 |    9e6  (50.51%) |  2.412  (85.3% / 14.7%) |     4.375
  4000 |   4000 |   16e6  (50.56%) |  4.316  (83.6% / 16.4%) |     4.434

Threshold: 0.7
Size 1 | Size 2 | Comparisons      | Total Time (s)          | Throughput
       |        |        (match %) | (comparisons / matching)|  (1e6 cmp/s)
-------+--------+------------------+-------------------------+-------------
  1000 |   1000 |    1e6  ( 0.01%) |  0.017  (99.8% /  0.2%) |    59.605
  2000 |   2000 |    4e6  ( 0.01%) |  0.056  (99.8% /  0.2%) |    71.484
  3000 |   3000 |    9e6  ( 0.01%) |  0.118  (99.9% /  0.1%) |    76.500
  4000 |   4000 |   16e6  ( 0.01%) |  0.202  (99.9% /  0.1%) |    79.256
  5000 |   5000 |   25e6  ( 0.01%) |  0.309  (99.9% /  0.1%) |    81.093
  6000 |   6000 |   36e6  ( 0.01%) |  0.435  (99.9% /  0.1%) |    82.841
  7000 |   7000 |   49e6  ( 0.01%) |  0.590  (99.9% /  0.1%) |    83.164
  8000 |   8000 |   64e6  ( 0.01%) |  0.757  (99.9% /  0.1%) |    84.619
  9000 |   9000 |   81e6  ( 0.01%) |  0.962  (99.8% /  0.2%) |    84.358
 10000 |  10000 |  100e6  ( 0.01%) |  1.166  (99.8% /  0.2%) |    85.895
 20000 |  20000 |  400e6  ( 0.01%) |  4.586  (99.9% /  0.1%) |    87.334

表的解释如下。第一节比较 通过(i)python位数组库和 (ii)汇编程序中的本机代码实现。后者 实施的衡量方法有两种:第一种是 计算popCounts所用的时间,而第二个包括 从正在运行的python实例中复制数据所需的时间 将结果复制回python。"%正在复制"度量值是" 复制所花时间的比例。

第二部分包括两个表,用于测量 骰子系数比较函数。这两张表对应于 "匹配阈值"的两种不同选择,0.5和0.7 用于描述两种不同的性能方案。自从 用于比较的数据是随机生成的,第一个阈值 值将导致大约50%的候选人"匹配",而 第二个阈值将导致0.01%的候选项匹配 (这些值在"match%"列中报告)。在这两种情况下, 所有超过阈值的匹配都将返回并传递给 求解器。在第一种情况下,大量的匹配意味着 把时间花在保持候选人的秩序上 k 可以返回匹配项。在后一种情况下, 候选匹配意味着吞吐量主要由 比较代码本身。

最后,总时间列包括 计算(稀疏)相似矩阵所花时间的比例 比较和 贪婪的解决者。后者取决于相似性的大小 矩阵,它将大约为 比较*match%/100

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java连接usb到uart设备到安卓设备>3.1   可以强制Php中的web应用程序与Java中的桌面应用程序一起工作吗?   java为什么自定义系统类加载器不工作?   数组在Java中解析具有多个分隔符的字符串   PMD Java 8德米特定律   JavaSpringMVC表单验证不适用于嵌套的复杂类型   让Eclipse Java组织导入以使用Google checkstyle   java Appium:无法创建新会话   java如何在数组中声明新字段   java如何解决“无法初始化类org.apache.cassandra.config.DatabaseDescriptor”?   java AsyncTask创建socket   java向@CreatedBy添加更多信息   如何在ubuntu中运行包含大量jars依赖项的java文件   java如何使用<s:select>标记并在中休眠来填充下拉列表?   java获取错误:找不到符号变量“level”和“next_level_button”   javaweb应用中基于UI的ajax显示代码流   Java长到MySql   java JvisualVM:奇怪的应用程序行为   ubuntu将Java程序的输出结果保存到一个文件中