-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbench_test.go
89 lines (83 loc) · 2.06 KB
/
bench_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package list_test
// import (
// "testing"
// "time"
// . "github.com/beeleelee/list"
// )
// func TestBigList(t *testing.T) {
// maxSize := 1 << 26
// t.Log(maxSize)
// list := List(make([]Item, maxSize))
// intSlice := make([]int, maxSize)
// for i, _ := range list {
// list[i] = i
// intSlice[i] = i
// }
// listSumStartTime := time.Now()
// s := list.Reduce(func(a, b Item) Item {
// return a.(int) + b.(int)
// }, nil)
// listSumEndTime := time.Now()
// t.Logf("list sum duration: %v", listSumEndTime.Sub(listSumStartTime))
// sliceSumStartTime := time.Now()
// sum := 0
// for _, v := range intSlice {
// sum += v
// }
// sliceSumEndTime := time.Now()
// t.Logf("slice sum duration: %v", sliceSumEndTime.Sub(sliceSumStartTime))
// t.Log(s, sum)
// t.Fail()
// }
// func concurrentSum(c chan int, l List, times int) {
// size := len(l)
// splitNum := size / times
// var start, end, count int
// count = 0
// for i := 0; i < times; i++ {
// start = i * splitNum
// if i+1 == times {
// end = size
// } else {
// end = (i + 1) * splitNum
// }
// go func(l List) {
// count++
// c <- (l.Reduce(func(a, b Item) Item {
// return a.(int) + b.(int)
// }, nil)).(int)
// if count+1 == times {
// close(c)
// }
// }(l[start:end])
// }
// }
// func TestBigListConcurrent(t *testing.T) {
// maxSize := 1 << 26
// t.Log(maxSize)
// list := List(make([]Item, maxSize))
// intSlice := make([]int, maxSize)
// for i, _ := range list {
// list[i] = i
// intSlice[i] = i
// }
// listSumStartTime := time.Now()
// goRoutineNum := 10
// s := 0
// c := make(chan int)
// concurrentSum(c, list, goRoutineNum)
// for i := 0; i < goRoutineNum; i++ {
// s += <-c
// }
// listSumEndTime := time.Now()
// t.Logf("list sum duration: %v", listSumEndTime.Sub(listSumStartTime))
// sliceSumStartTime := time.Now()
// sum := 0
// for _, v := range intSlice {
// sum += v
// }
// sliceSumEndTime := time.Now()
// t.Logf("slice sum duration: %v", sliceSumEndTime.Sub(sliceSumStartTime))
// t.Log(s, sum)
// t.Fail()
// }