Skip to content

Commit fd8c0a4

Browse files
authored
Use slice to speed up inner loop for python's nsieve benchmark (#327)
1 parent cb6987c commit fd8c0a4

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

bench/algorithm/nsieve/2.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import sys
2+
3+
4+
def nsieve(n):
5+
count = 0
6+
flags = [True] * n
7+
for i in range(2, n):
8+
if flags[i]:
9+
count += 1
10+
flags[slice(i << 1, n, i)] = [False] * ((n - 1) // i - 1)
11+
print(f'Primes up to {n:8} {count:8}')
12+
13+
14+
if __name__ == '__main__':
15+
n = int(sys.argv[1]) if len(sys.argv) > 1 else 4
16+
for i in range(0, 3):
17+
nsieve(10000 << (n-i))

bench/bench_python.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ problems:
4545
- name: nsieve
4646
source:
4747
- 1.py
48+
- 2.py
4849
- name: lru
4950
source:
5051
- 1.py

0 commit comments

Comments
 (0)