用L1 CPU缓存实现C++算法的Python

用L1 CPU缓存实现C++算法的Python,python,c++,python-2.7,sieve-of-eratosthenes,Python,C++,Python 2.7,Sieve Of Eratosthenes,我希望用分段筛来实现Eratosthenes筛的python实现,并使用CPU的一级缓存 我在github上有自己的版本:,它不使用CPU的一级缓存大小 我找到了下面的站点,它给出了使用L1缓存大小的C++实现。它说它比我的算法要快得多。我的算法需要几分钟来创建高达10^7的素数,并且由于内存使用而挂起10^8 我正在开发LinuxMintV17,python版本:2.74。 更新我的CPU是英特尔i7 我对python相当陌生 我想知道: 如何开始执行Python版本的C++算法? 我需要考虑

我希望用分段筛来实现Eratosthenes筛的python实现,并使用CPU的一级缓存

我在github上有自己的版本:,它不使用CPU的一级缓存大小

我找到了下面的站点,它给出了使用L1缓存大小的C++实现。它说它比我的算法要快得多。我的算法需要几分钟来创建高达10^7的素数,并且由于内存使用而挂起10^8

我正在开发LinuxMintV17,python版本:2.74。 更新我的CPU是英特尔i7

我对python相当陌生

我想知道:

如何开始执行Python版本的C++算法? 我需要考虑什么? 在C++实现中有什么东西不能用Python 2.74编码吗? 多线程呢? 阅读怎么样? python的GIL呢?
寻找能回答我以上所有问题的答案。欢迎提供提示和提示。

我不确定您是否能够对Python如何使用内存做出足够的假设,以确保它有效地使用一级缓存。 另外,10^8仅为1/2 Gig,因此您当前的实现在元素分配方面肯定非常低效。 如果只在每个位置存储一个标志,那么最好创建尽可能大的字符串,并将其索引为筛选存储,而不是使用整数数组? 当然可以使用字符串作为分段筛存储,如果幸运的话,它们可能足够小,可以在一级缓存中使用。 C有一些很好的位索引和操作,我确信python中有这些功能,可以让您独立地操作每个位。可以对字符值执行位操作