Implement a global and shared rand.Rand object #2

Closed
kayos wants to merge 0 commits from fast-rand into main
Owner

Entropy scoring test based largely from existing unit tests:

package main

import (
	"fmt"
	"log"
	"os"
	"strings"

	"git.tcp.direct/kayos/common/entropy"
)

var (
	RandScore     = 0
	FastRandScore = 0
)

func RandStr_Entropy(fast bool) {
	var rstr func(n int) string
	rstr = entropy.RandStr
	if fast {
		rstr = entropy.FastRandStr
	}
	var totalScore = 0
	for n := 0; n != 500; n++ {
		zero := rstr(55)
		one := rstr(55)
		zeroSplit := strings.Split(zero, "")
		oneSplit := strings.Split(one, "")
		var similarity = 0
		for i, char := range zeroSplit {
			if oneSplit[i] != char {
				continue
			}
			similarity++
			// t.Logf("[-] zeroSplit[%d] is the same as oneSplit[%d] (%s)", i, i, char)
		}
		if similarity*4 > 55 {
			log.Fatalf("[ENTROPY FAILURE] more than a quarter of the string is the same!\n zero: %s \n one: %s \nTotal similar: %d",
				zero, one, similarity)
		}
		// t.Logf("[ENTROPY] Similarity score (lower is better): %d", similarity)
		totalScore += similarity
	}
	if fast {
		FastRandScore = totalScore
	} else {
		RandScore = totalScore
	}
	log.Printf("[ENTROPY] final score (lower is better): %d (fast: %t)", totalScore, fast)
}

var (
	RandScoreTotal     = 0
	FastRandScoreTotal = 0
)

func main() {
	for n := 0; n != 500; n++ {
		RandStr_Entropy(true)
		RandStr_Entropy(false)
		if RandScore > FastRandScore {
			FastRandScoreTotal++
		} else {
			RandScoreTotal++
		}
		FastRandScore = 0
		RandScore = 0
	}
	_, _ = fmt.Fprintf(os.Stdout,
		"\n\n--------\n\nRandScore: %d\nFastRandScore: %d\n\n",
		RandScoreTotal, FastRandScoreTotal)
}

Entropy score difference:

2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 871 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 850 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 885 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 849 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 867 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 853 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 836 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 869 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 886 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 834 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 859 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 833 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 893 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 864 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 824 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 838 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 879 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 879 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 840 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 883 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 788 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 814 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 866 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 855 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 853 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 863 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 836 (fast: true)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 793 (fast: false)
2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 838 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 971 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 859 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 843 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 858 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 809 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 869 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 865 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 872 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 852 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 857 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 884 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 853 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 880 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 847 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 875 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 948 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 848 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 851 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 848 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 819 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 868 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 889 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 859 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 852 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 830 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 845 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 897 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 785 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 859 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 918 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 869 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 889 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 867 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 845 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 864 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 897 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 839 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 878 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 863 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 801 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 880 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 898 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 830 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 810 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 875 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 815 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 848 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 865 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 864 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 906 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 856 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 851 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 876 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 842 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 860 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 798 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 833 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 858 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 832 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 835 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 900 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 886 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 833 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 877 (fast: true)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 939 (fast: false)
2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 832 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 893 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 872 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 847 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 854 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 877 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 844 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 893 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 829 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 890 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 848 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 860 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 859 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 864 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 810 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 865 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 902 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 884 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 847 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 869 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 847 (fast: true)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 860 (fast: false)
2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 830 (fast: true)
[...]

--------

RandScore: 244
FastRandScore: 256

Performance Gainz

goos: linux
goarch: amd64
pkg: git.tcp.direct/kayos/common/entropy
cpu: AMD Ryzen 9 5900X 12-Core Processor
Benchmark_FastRandStr5-24        	16634295	   70.54 ns/op
Benchmark_FastRandStr25-24       	4750281	      251.4 ns/op
Benchmark_FastRandStr55-24       	2358594	      498.9 ns/op
Benchmark_FastRandStr500-24      	 270087	     4173 ns/op
Benchmark_FastRandStr55555-24    	   2541	   466373 ns/op
Benchmark_RandStr5-24            	 430225	     2686 ns/op
Benchmark_RandStr25-24           	  91171	    13381 ns/op
Benchmark_RandStr55-24           	  41107	    29162 ns/op
Benchmark_RandStr500-24          	   4519	   267191 ns/op
Benchmark_RandStr55555-24        	     39	 29355739 ns/op

I think the choice is clear, instead of maintaining two different versions (fastrand and rand), I'm just going to implement the global shared rand as the main entropy interface.

Entropy scoring test based largely from existing unit tests: ```golang package main import ( "fmt" "log" "os" "strings" "git.tcp.direct/kayos/common/entropy" ) var ( RandScore = 0 FastRandScore = 0 ) func RandStr_Entropy(fast bool) { var rstr func(n int) string rstr = entropy.RandStr if fast { rstr = entropy.FastRandStr } var totalScore = 0 for n := 0; n != 500; n++ { zero := rstr(55) one := rstr(55) zeroSplit := strings.Split(zero, "") oneSplit := strings.Split(one, "") var similarity = 0 for i, char := range zeroSplit { if oneSplit[i] != char { continue } similarity++ // t.Logf("[-] zeroSplit[%d] is the same as oneSplit[%d] (%s)", i, i, char) } if similarity*4 > 55 { log.Fatalf("[ENTROPY FAILURE] more than a quarter of the string is the same!\n zero: %s \n one: %s \nTotal similar: %d", zero, one, similarity) } // t.Logf("[ENTROPY] Similarity score (lower is better): %d", similarity) totalScore += similarity } if fast { FastRandScore = totalScore } else { RandScore = totalScore } log.Printf("[ENTROPY] final score (lower is better): %d (fast: %t)", totalScore, fast) } var ( RandScoreTotal = 0 FastRandScoreTotal = 0 ) func main() { for n := 0; n != 500; n++ { RandStr_Entropy(true) RandStr_Entropy(false) if RandScore > FastRandScore { FastRandScoreTotal++ } else { RandScoreTotal++ } FastRandScore = 0 RandScore = 0 } _, _ = fmt.Fprintf(os.Stdout, "\n\n--------\n\nRandScore: %d\nFastRandScore: %d\n\n", RandScoreTotal, FastRandScoreTotal) } ``` ## Entropy score difference: ``` 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 871 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 850 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 885 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 849 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 867 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 853 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 836 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 869 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 886 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 834 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 859 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 833 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 893 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 864 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 824 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 838 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 879 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 879 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 840 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 883 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 788 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 814 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 866 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 855 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 853 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 863 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 836 (fast: true) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 793 (fast: false) 2022/07/12 01:46:59 [ENTROPY] final score (lower is better): 838 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 971 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 859 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 843 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 858 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 809 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 869 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 865 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 872 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 852 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 857 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 884 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 853 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 880 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 847 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 875 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 948 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 848 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 851 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 848 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 819 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 868 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 889 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 859 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 852 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 830 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 845 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 897 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 785 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 859 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 918 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 869 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 889 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 867 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 845 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 864 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 897 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 839 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 878 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 863 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 801 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 880 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 898 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 830 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 810 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 875 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 815 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 848 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 865 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 864 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 906 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 856 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 851 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 876 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 842 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 860 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 798 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 833 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 858 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 832 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 835 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 900 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 886 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 833 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 877 (fast: true) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 939 (fast: false) 2022/07/12 01:47:00 [ENTROPY] final score (lower is better): 832 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 893 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 872 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 847 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 854 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 877 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 844 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 893 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 829 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 890 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 848 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 860 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 859 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 864 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 810 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 865 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 902 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 884 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 847 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 869 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 847 (fast: true) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 860 (fast: false) 2022/07/12 01:47:01 [ENTROPY] final score (lower is better): 830 (fast: true) [...] -------- RandScore: 244 FastRandScore: 256 ``` ## Performance Gainz ``` goos: linux goarch: amd64 pkg: git.tcp.direct/kayos/common/entropy cpu: AMD Ryzen 9 5900X 12-Core Processor Benchmark_FastRandStr5-24 16634295 70.54 ns/op Benchmark_FastRandStr25-24 4750281 251.4 ns/op Benchmark_FastRandStr55-24 2358594 498.9 ns/op Benchmark_FastRandStr500-24 270087 4173 ns/op Benchmark_FastRandStr55555-24 2541 466373 ns/op Benchmark_RandStr5-24 430225 2686 ns/op Benchmark_RandStr25-24 91171 13381 ns/op Benchmark_RandStr55-24 41107 29162 ns/op Benchmark_RandStr500-24 4519 267191 ns/op Benchmark_RandStr55555-24 39 29355739 ns/op ``` --- I think the choice is clear, instead of maintaining two different versions (fastrand and rand), I'm just going to implement the global shared rand as the main entropy interface.
kayos added 1 commit 2022-07-12 09:10:25 +00:00
Author
Owner

Codecov Report

Merging #1 (30f94d6) into master (d07f8de) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master        #1   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            6         6           
  Lines          165       169    +4     
=========================================
+ Hits           165       169    +4     
Impacted Files Coverage Δ
entropy/entropy.go 100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d07f8de...30f94d6. Read the comment docs.

# [Codecov](https://codecov.io/gh/yunginnanet/common/pull/1?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos) Report > Merging [#1](https://codecov.io/gh/yunginnanet/common/pull/1?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos) (30f94d6) into [master](https://codecov.io/gh/yunginnanet/common/commit/d07f8de10512f9fd4ddd8a602a4889532cd92bf0?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos) (d07f8de) will **not change** coverage. > The diff coverage is `100.00%`. ```diff @@ Coverage Diff @@ ## master #1 +/- ## ========================================= Coverage 100.00% 100.00% ========================================= Files 6 6 Lines 165 169 +4 ========================================= + Hits 165 169 +4 ``` | [Impacted Files](https://codecov.io/gh/yunginnanet/common/pull/1?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos) | Coverage Δ | | |---|---|---| | [entropy/entropy.go](https://codecov.io/gh/yunginnanet/common/pull/1/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos#diff-ZW50cm9weS9lbnRyb3B5Lmdv) | `100.00% <100.00%> (ø)` | | ------ [Continue to review full report at Codecov](https://codecov.io/gh/yunginnanet/common/pull/1?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos). > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov.io/gh/yunginnanet/common/pull/1?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos). Last update [d07f8de...30f94d6](https://codecov.io/gh/yunginnanet/common/pull/1?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kayos).
kayos closed this pull request 2022-07-16 09:24:37 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: kayos/common#2
No description provided.