Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "math/rand"
- "time"
- )
- const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 abcdefghijklmnopqrstuvwxyz" +
- "~!@#$%^&*()-_+={}[]\\|<,>.?/\"';:`"
- const Maxlen = 1024
- func RandStrings(N int) []string {
- r := make([]string, N)
- ri := 0
- buf := make([]byte, Maxlen)
- known := map[string]bool{}
- for i := 0; i < N; i++ {
- retry:
- l := rand.Intn(Maxlen)
- for j := 0; j < l; j++ {
- buf[j] = chars[rand.Intn(len(chars))]
- }
- s := string(buf[0:l])
- if known[s] {
- goto retry
- }
- known[s] = true
- r[ri] = s
- ri++
- }
- return r
- }
- func timeTrack(start time.Time, name string, num int, dbtype string) {
- elapsed := time.Since(start)
- fmt.Println(name, elapsed, "throughput:", int64(float64(num)/(elapsed.Seconds())), "/sec\n")
- }
- func runbench(t string, n int) {
- defer timeTrack(time.Now(), fmt.Sprintf("%d strings, type %s", n, t), n, t)
- for i := 0; i < n; i++ {
- r := RandStrings(2)
- _ = r
- }
- }
- func main() {
- iter := 64000000
- incr := 1000
- for i := incr; i < iter+1; i = incr {
- runbench("t", i)
- incr = 2 * i
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement