[英]Python implementation of c++ algorithm using L1 CPU Cache
我正在寻找使用分段筛子并使用CPU的L1 Cache来实现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。
我是python的新手。
我想知道:
寻找答案,以回答以上所有问题的精神。 欢迎提示和技巧。
我不确定您是否可以对Python如何使用内存做出足够的假设,以确保它有效地使用L1缓存。 另外,10 ^ 8仅为1/2 Gig,因此您当前的实现在元素分配方面必须非常低效。 您最好创建尽可能大的字符串,并将其索引为筛存储,而不是如果只打算在每个位置存储单个标志,则不使用整数数组? 当然,可以将字符串用作分段筛存储,如果幸运的话,它们可能足够小,可以驻留在L1高速缓存中。 C有一些不错的位索引和操作,我相信python中提供了这些功能,可以让您独立地操作每个位。 您可以对字符值进行位操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.