-
Notifications
You must be signed in to change notification settings - Fork 199
/
main.go
120 lines (94 loc) · 3.7 KB
/
main.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
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
116
117
118
119
120
package main
import (
"fmt"
"strconv"
"github.com/360EntSecGroup-Skylar/excelize"
"github.com/ElrondNetwork/elrond-go/benchmark-broadcast/broadcast"
)
func main() {
totalLatency, nrOfHops, lonelyNodes := broadcast.Broadcast(500, 0.1, 12, 2048, 64)
fmt.Println("latency", totalLatency, " hops ", nrOfHops, " lonely ", lonelyNodes)
}
func intraShard() {
xlsx := excelize.NewFile()
index := xlsx.NewSheet("Sheet1")
xlsx.SetCellValue("Sheet1", "A1", "Number of nodes")
xlsx.SetCellValue("Sheet1", "B1", "Latency (s)")
xlsx.SetCellValue("Sheet1", "C1", "Peers / node")
xlsx.SetCellValue("Sheet1", "D1", "Bandwidth (kB/s)")
xlsx.SetCellValue("Sheet1", "E1", "block size (kB)")
xlsx.SetCellValue("Sheet1", "F1", "Number of hops ")
xlsx.SetCellValue("Sheet1", "G1", "Total latency (s)")
xlsx.SetCellValue("Sheet1", "H1", "Number of lonely nodes")
row := 2
ct := 10.0
for nodes := 500; nodes <= 600; nodes += 100 {
for latency := 0.1; latency <= 0.2; latency += 0.1 {
for peersPerNode := 4; peersPerNode <= 20; peersPerNode++ {
for bandwidth := 2048; bandwidth <= 4096; bandwidth += 1024 {
for blocksize := 256; blocksize <= 512; blocksize += 128 {
meanTotalLatency, meanNrOfHops, meanLonelyNodes := 0.0, 0.0, 0.0
for i := 0; i < 10; i++ {
totalLatency, nrOfHops, lonelyNodes := broadcast.Broadcast(nodes, latency, peersPerNode, bandwidth, blocksize)
meanTotalLatency += (float64)(totalLatency)
meanNrOfHops += (float64)(nrOfHops)
meanLonelyNodes += (float64)(lonelyNodes)
}
xlsx.SetCellValue("Sheet1", "A"+strconv.Itoa(row), nodes)
xlsx.SetCellValue("Sheet1", "B"+strconv.Itoa(row), latency)
xlsx.SetCellValue("Sheet1", "C"+strconv.Itoa(row), peersPerNode)
xlsx.SetCellValue("Sheet1", "D"+strconv.Itoa(row), bandwidth)
xlsx.SetCellValue("Sheet1", "E"+strconv.Itoa(row), blocksize)
xlsx.SetCellValue("Sheet1", "F"+strconv.Itoa(row), meanNrOfHops/ct)
xlsx.SetCellValue("Sheet1", "G"+strconv.Itoa(row), meanTotalLatency/ct)
xlsx.SetCellValue("Sheet1", "H"+strconv.Itoa(row), meanLonelyNodes/ct)
row++
fmt.Println(row)
}
}
}
xlsx.SetActiveSheet(index)
err := xlsx.SaveAs("./benchmark.xlsx")
if err != nil {
fmt.Println(err)
}
}
}
}
func interShard() {
xlsx := excelize.NewFile()
index := xlsx.NewSheet("Sheet1")
xlsx.SetCellValue("Sheet1", "A1", "Number of nodes")
xlsx.SetCellValue("Sheet1", "B1", "Latency (s)")
xlsx.SetCellValue("Sheet1", "C1", "Peers / node")
xlsx.SetCellValue("Sheet1", "D1", "Bandwidth (kB/s)")
xlsx.SetCellValue("Sheet1", "E1", "block size (kB)")
xlsx.SetCellValue("Sheet1", "F1", "Number of hops ")
xlsx.SetCellValue("Sheet1", "G1", "Total latency (s)")
xlsx.SetCellValue("Sheet1", "H1", "Number of lonely nodes")
latency := 0.2
peersPerNode := 14
bandwidth := 2048
blocksize := 256
row := 2
for nodes := 15000; nodes <= 20000; nodes += 5000 {
for i := 0; i < 10; i++ {
totalLatency, nrOfHops, lonelyNodes := broadcast.Broadcast(nodes, latency, peersPerNode, bandwidth, blocksize)
xlsx.SetCellValue("Sheet1", "A"+strconv.Itoa(row), nodes)
xlsx.SetCellValue("Sheet1", "B"+strconv.Itoa(row), latency)
xlsx.SetCellValue("Sheet1", "C"+strconv.Itoa(row), peersPerNode)
xlsx.SetCellValue("Sheet1", "D"+strconv.Itoa(row), bandwidth)
xlsx.SetCellValue("Sheet1", "E"+strconv.Itoa(row), blocksize)
xlsx.SetCellValue("Sheet1", "F"+strconv.Itoa(row), nrOfHops)
xlsx.SetCellValue("Sheet1", "G"+strconv.Itoa(row), totalLatency)
xlsx.SetCellValue("Sheet1", "H"+strconv.Itoa(row), lonelyNodes)
xlsx.SetActiveSheet(index)
err := xlsx.SaveAs("./benchmark1.xlsx")
if err != nil {
fmt.Println(err)
}
row++
fmt.Println(row)
}
}
}