为python提供基于共享内存的哈希表
pyshmht的Python项目详细描述
皮什姆特
=======
**基于共享内存**python哈希表扩展
有关示例,请参见python文件中的测试用例(pyshmht/cacher.py、pyshmht/hashtable.py),在这些文件中还可以找到性能测试。
性能
===========
容量=200米,64字节密钥/值测试,在(Xeon E5-2670 0@2.60GHz,128GB RAM)上测试
*hash table.c(c中的原始哈希表,在“malloc”ed内存上测试)
>;设置:93万IOPS;
>;获得:235万IOPS;
*性能测试.py(原始python绑定)
>;设置:451k IOPS;
>;获取:272K IOPS;
*hashtable.py(简单包装,无序列化)
>;设置:354K IOPS;
>;获取:20.2万IOPS;
*cacher.py(缓存包装,带序列化)
>;设置:501K IOPS(缓存),228K IOPS(写回后);
>;获取:560k IOPS(缓存),238k IOPS(无缓存);
*python本机dict
>;设置:741K IOPS;
>;获得:390K IOPS;
注意
======
在hashtable.c中,默认最大密钥长度为“256-4”,最大值长度为“1024-4”;您可以手动更改“bucket-size”和“max-key-size”,但请记住,增加这两个参数将导致更大的内存消耗。
如果您发现任何错误,请提交问题或向我发送请求,我将尽快处理:)
p.s.`hashtable.c`是独立的(即与python无关),如果需要,您可以在其他项目中使用它。:p页
=======
**基于共享内存**python哈希表扩展
有关示例,请参见python文件中的测试用例(pyshmht/cacher.py、pyshmht/hashtable.py),在这些文件中还可以找到性能测试。
性能
===========
容量=200米,64字节密钥/值测试,在(Xeon E5-2670 0@2.60GHz,128GB RAM)上测试
*hash table.c(c中的原始哈希表,在“malloc”ed内存上测试)
>;设置:93万IOPS;
>;获得:235万IOPS;
*性能测试.py(原始python绑定)
>;设置:451k IOPS;
>;获取:272K IOPS;
*hashtable.py(简单包装,无序列化)
>;设置:354K IOPS;
>;获取:20.2万IOPS;
*cacher.py(缓存包装,带序列化)
>;设置:501K IOPS(缓存),228K IOPS(写回后);
>;获取:560k IOPS(缓存),238k IOPS(无缓存);
*python本机dict
>;设置:741K IOPS;
>;获得:390K IOPS;
注意
======
在hashtable.c中,默认最大密钥长度为“256-4”,最大值长度为“1024-4”;您可以手动更改“bucket-size”和“max-key-size”,但请记住,增加这两个参数将导致更大的内存消耗。
如果您发现任何错误,请提交问题或向我发送请求,我将尽快处理:)
p.s.`hashtable.c`是独立的(即与python无关),如果需要,您可以在其他项目中使用它。:p页