Skip to content

Commit 0899bd2

Browse files
committed
Golang: obliterate coro-prime-sieve score
1 parent f2172e6 commit 0899bd2

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed

bench/algorithm/coro-prime-sieve/2.go

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package main
2+
3+
import (
4+
"bufio"
5+
"fmt"
6+
"io"
7+
"os"
8+
"strconv"
9+
)
10+
11+
// get r3kt.
12+
// - yung innanet
13+
14+
func SieveOfEratosthenes(out io.Writer) {
15+
sieve := make([]bool, 20000)
16+
p := 2
17+
18+
for {
19+
if !sieve[p] {
20+
_, _ = fmt.Fprintln(out, p)
21+
for multiple := p * p; multiple <= len(sieve)-1; multiple += p {
22+
sieve[multiple] = true
23+
}
24+
}
25+
p++
26+
if p > len(sieve)-1 {
27+
return
28+
}
29+
}
30+
}
31+
32+
func main() {
33+
n := 1000
34+
if len(os.Args) > 1 {
35+
if _n, err := strconv.Atoi(os.Args[1]); err == nil {
36+
n = _n
37+
}
38+
}
39+
pipeIn, pipeOut := io.Pipe()
40+
41+
out := bufio.NewWriter(os.Stdout)
42+
in := bufio.NewWriter(pipeOut)
43+
44+
readerUntil := bufio.NewReader(pipeIn)
45+
go SieveOfEratosthenes(in)
46+
47+
rd := func() []byte {
48+
b, _ := readerUntil.ReadSlice('\n')
49+
return b
50+
}
51+
52+
i := 0
53+
for {
54+
if i >= n {
55+
break
56+
}
57+
_, _ = out.Write(rd())
58+
i++
59+
}
60+
_ = out.Flush()
61+
}

bench/bench_go.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ problems:
4545
- name: coro-prime-sieve
4646
source:
4747
- 1.go
48+
- 2.go
4849
- name: http-server
4950
source:
5051
- 1.go

bench/bench_go_tinygo.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ problems:
4040
- name: coro-prime-sieve
4141
source:
4242
- 1.go
43+
- 2.go
4344
# - name: json-serde
4445
# source:
4546
# - 1.go

0 commit comments

Comments
 (0)