Fast Prime List Functions的代碼

把寫代碼過程中比較重要的代碼片段珍藏起來,下邊資料是關(guān)于Fast Prime List Functions的代碼。

'''primelist_timing1.py

timing some very fast primelist functions

tested with Python27 and Python32? by? vegaseat

'''

import timeit

import numpy

import sys

print("Python version:n %sn" % sys.version)

def time_function(stmt, setup):

? ? """

? ? use module timeit to time functions

? ? """

? ? # to enable garbage collection start setup with 'gc.enable();'

? ? #setup = 'gc.enable();' + setup

? ? t = timeit.Timer(stmt, setup)

? ? times = 10000

? ? num = 100

? ? # (lower num is a little less precise but saves time)

? ? print("%-20s --> %0.2f microseconds/pass" % (stmt, elapsed))

def primelist_bw(n):

? ? """

? ? returns? a list of primes < n

? ? by Bill Woods

? ? """

? ? ? ? if sieve[x>>1]:

? ? return [2] + [(x<<1)+1 for x in range(1, n>>1) if sieve[x]]

def primelist_ds(n):

? ? """

? ? returns? a list of primes < n

? ? """

? ? ? ? if sieve[x>>1]:

? ? return [2] + [(x<<1)+1 for x in range(1, n>>1) if sieve[x]]

def primes_numpy(n):

? ? """

? ? requires module numpy and n>=6,

? ? returns a list of primes 2 <= p < n

? ? """

? ? sieve[0] = False

? ? ? ? if sieve[x]:

# time a function

stmt = 'primelist_bw(1000000)'

setup = 'from __main__ import primelist_bw'

time_function(stmt, setup)

# time a function

stmt = 'primelist_ds(1000000)'

setup = 'from __main__ import primelist_ds'

time_function(stmt, setup)

# time a function

stmt = 'primes_numpy(1000000)'

setup = 'from __main__ import primes_numpy, numpy'

time_function(stmt, setup)

# additional test (show the last 5 primes) ...

print(primelist_bw(1000000)[-5:])

print(primelist_ds(1000000)[-5:])

print(primes_numpy(1000000)[-5:])

'''result ...

Python version:

2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]

primelist_bw(1000000) --> 75969.22 microseconds/pass

primelist_ds(1000000) --> 73669.90 microseconds/pass

primes_numpy(1000000) --> 9016.74 microseconds/pass

------------------------------------------------------------

[999953, 999959, 999961, 999979, 999983]

[999953, 999959, 999961, 999979, 999983]

[999953, 999959, 999961, 999979, 999983]

Python version:

3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)]

primelist_bw(1000000) --> 77284.28 microseconds/pass

primelist_ds(1000000) --> 75547.38 microseconds/pass

primes_numpy(1000000) --> 28055.11 microseconds/pass

------------------------------------------------------------

[999953, 999959, 999961, 999979, 999983]

[999953, 999959, 999961, 999979, 999983]

[999953, 999959, 999961, 999979, 999983]

'''

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 向來最深沉濃郁的思念,總以最淺最淡的方式郁結(jié)于心?用情越深,就越是卑微,就連思念也要狠狠遏制。 我怎么敢肆無忌憚的...
    荊洛閱讀 318評(píng)論 0 3
  • react-native code之路 使用Flexbox布局 容器的屬性 1、Flex Direction 在組...
    zhangyugehu閱讀 608評(píng)論 0 50
  • 看得出是誰不 我自己也看不出了 邊刻邊修 現(xiàn)在看的出來了嗎? 完工 最后說句我討厭頭發(fā) !非常討厭!
    烏龍茶低糖閱讀 600評(píng)論 24 18

友情鏈接更多精彩內(nèi)容