-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpoint.go
More file actions
115 lines (90 loc) · 1.8 KB
/
point.go
File metadata and controls
115 lines (90 loc) · 1.8 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package main
//测试数据
var testData = CreateTestData()
func GetValue(index int) int {
return testData[index]
}
//获取测试数据长度
func GetDataLen() int{
return len(testData)
}
//获取测试数据数组
func GetData() []int {
return testData
}
//创建一个6000000000大小的整型切片,大概需要占用22G的进程虚拟空间。
//注:如果是32位系统的话需要将值改小,32操作系统的虚拟空间最大只有4G
func CreateTestData()[]int {
data := make([]int,6000000000)
for index,_ := range data{
data[index] = index % 128
}
return data
}
func toSum1(result *int) {
for i:=0;i< GetDataLen();i++{
*result += GetValue(i)
}
}
func toSum2(result *int) {
dataLength := GetDataLen()
for i:=0;i< dataLength;i++{
*result += GetValue(i)
}
}
func toSum3(result *int) {
data := GetData()
dataLength := len(data)
for i:=0;i< dataLength;i++{
*result += data[i]
}
}
func toSum4(result *int) {
k := *result
data := GetData()
dataLength := len(data)
for i:=0;i< dataLength;i++{
k += data[i]
}
*result = k
}
func toSum5(result *int) {
k := *result
data := GetData()
dataLength := len(data)
for i:=1;i< dataLength;i+=2{
k += data[i] + data[i - 1]
}
if dataLength % 2 == 1{
k += data[dataLength-1]
}
*result = k
}
func toSum6(result *int) {
k1 := 0
k2 := 0
data := GetData()
dataLength := len(data)
for i:=1;i< dataLength;i+=2{
k1 += data[i]
k2 += data[i - 1]
}
//如果是传入的数量是奇数,则单独对最后一个数进行累加
if dataLength % 2 == 1{
k1 += data[dataLength-1]
}
*result = k1 + k2
}
func toSum7(result *int) {
k1 := 0
k2 := 0
k3 := 0
data := GetData()
dataLength := len(data)
for i:=0;i< dataLength-3;i+=3{
k1 += data[i]
k2 += data[i + 1]
k3 += data[i + 2]
}
*result = k1 + k2 + k3
}