使用L1CPUCache实现c++算法的Python
Python implementation of c++ algorithm using L1 CPU Cache
我想用分段的筛子,并使用CPU的L1缓存,实现Eratosthenes的筛子的python实现。
我在github上有自己的版本:https://github.com/nick599/PythonMathsAlgorithms/blob/master/segmented_soe_v6.py,它不使用CPU的L1高速缓存大小。
我发现了以下网站-http://primesieve.org/segmented_sieve.html,给出了使用L1高速缓存大小的C++实现。它说它比我的算法快得多(我的算法需要几分钟才能创建10^7的素数,由于内存使用,它会挂在10^8上)。
我在Linux Mint v17上开发,python版本:2.74。更新我的CPU是Intel i7。
我对蟒蛇还相当陌生。
我想知道:
- 如何开始实现这个C++算法的python版本
- 我需要考虑什么
- C++实现中是否存在无法用Python 2.74进行编码的内容
- 那么多线程呢
- 那么超线程呢
- python的GIL呢
寻找答案,回答我上面所有问题的精神。欢迎提供提示。
我不确定您能否对Python如何使用内存做出足够的假设,以确保它有效地使用一级缓存。此外,10^8仅为1/2Gig,因此您当前的实现在元素分配方面的效率肯定非常低。如果你只想在每个位置存储一个标志,那么你最好创建尽可能大的字符串,并将其作为你的筛选存储进行索引,而不是使用一个整数数组?当然可以使用字符串作为分段筛选存储,如果幸运的话,它们可能足够小,可以在一级缓存中使用。C有一些很好的位索引和操作,我相信python中也有这些功能,可以让你独立地操作每个位。您可以对字符值进行位操作。
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- 基于ELO的团队匹配算法
- OpenCV - Python 断言错误:SAD 算法 - 立体相机视差图计算
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- 在 c++ 或 python 中生成一个体面的视差图以在 Raspberry Pi 上实现的最佳方法(算法或函数)是什么
- Python到C++:使用递归列出背包的所有组合的算法
- 使用L1CPUCache实现c++算法的Python
- 是用C 编写的TensorFlow的所有算法,而Python仅用于易于使用的API
- C++算法,如python的"groupby"
- 在Java/PHP/Python框架内,在编译的C/C++代码中运行算法
- python中等价的C/C++loselose算法是什么
- C++ 和 Python 中的算法相同,但输出不同
- 将Python算法翻译成C++时遇到问题
- c++算法的python包装器内存泄漏
- Python-生成给定长度的所有可能的1和0数组的算法