when you're doing something so simple, the overhead of SMP isn't worth it

This commit is contained in:
Steven Polley 2020-11-14 18:17:12 -07:00
parent 022ff76715
commit 88dc46f552
1 changed files with 2 additions and 14 deletions

16
main.go
View File

@ -7,14 +7,13 @@ import (
"math"
"math/rand"
"os"
"runtime"
"time"
)
const (
randomMin = 0
randomMax = 9999999999999999
numSamples = 10000000
numSamples = 100000000
)
func main() {
@ -34,13 +33,8 @@ func main() {
log.Printf("generating numbers...")
rand.Seed(time.Now().UnixNano())
generatedNumbers := make(chan int, 1024)
for i := 0; i < runtime.NumCPU(); i++ {
go generatorWorker(generatedNumbers)
}
for currentSample = 0; currentSample < numSamples; currentSample++ {
results[firstDigit(<-generatedNumbers)-1]++
results[firstDigit(rand.Intn(randomMax-randomMin+1)+randomMin)-1]++ // We must use Intn instead of Int because from Base10's perspective, integers cut off at a really weird spot
}
statusTicker.Stop()
@ -55,12 +49,6 @@ func main() {
bufio.NewReader(os.Stdin).ReadBytes('\n')
}
func generatorWorker(returnChannel chan int) {
for {
returnChannel <- rand.Intn(randomMax-randomMin+1) + randomMin // We must use Intn instead of Int because from Base10's perspective, integers cut off at a really weird spot
}
}
// firstDigit returns the first/leftmost digit of the base10 representation of an integer
func firstDigit(x int) int {
return int(math.Abs(float64(x)) / math.Pow(10, float64(numDigits(x)-1)))