Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
MetaProtocol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nebula
MetaProtocol
Commits
a3a612d8
Commit
a3a612d8
authored
Dec 06, 2022
by
Ubuntu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add tps
parent
44089981
Changes
10
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
790 additions
and
298 deletions
+790
-298
RepeatedEthTx.txt
benchmark/RepeatedEthTx.txt
+241
-81
RepeatedTxEthAsAny.txt
benchmark/RepeatedTxEthAsAny.txt
+241
-81
benchmark_test.go
benchmark/benchmark_test.go
+29
-13
none.html
benchmark/none.html
+48
-34
stat_test.go
benchmark/stat_test.go
+37
-7
test_test.go
benchmark/test_test.go
+79
-5
ttest.html
benchmark/ttest.html
+50
-36
utest.html
benchmark/utest.html
+50
-36
go.mod
go.mod
+5
-5
go.sum
go.sum
+10
-0
No files found.
benchmark/RepeatedEthTx.txt
View file @
a3a612d8
This diff is collapsed.
Click to expand it.
benchmark/RepeatedTxEthAsAny.txt
View file @
a3a612d8
This diff is collapsed.
Click to expand it.
benchmark/benchmark_test.go
View file @
a3a612d8
...
@@ -3,9 +3,12 @@ package benchmark_test
...
@@ -3,9 +3,12 @@ package benchmark_test
import
(
import
(
"fmt"
"fmt"
"math"
"math"
"math/big"
"sort"
"sort"
"testing"
"testing"
"github.com/ethereum/go-ethereum/crypto"
)
)
//date && go test -v -run BenchmarkHello -bench=BenchmarkHello -benchtime=3s -benchmem && date
//date && go test -v -run BenchmarkHello -bench=BenchmarkHello -benchtime=3s -benchmem && date
...
@@ -18,25 +21,38 @@ func BenchmarkHello(b *testing.B) {
...
@@ -18,25 +21,38 @@ func BenchmarkHello(b *testing.B) {
// //b.Logf("begin time: %s \n", time.Now())
// //b.Logf("begin time: %s \n", time.Now())
// b.ResetTimer()
// b.ResetTimer()
// for i := 0; i < b.N; i++ {
// //b.Logf("idx %d time: %s \n", i, time.Now())
// fmt.Sprintf("hello")
// }
//b.StopTimer()
local
,
_
:=
crypto
.
HexToECDSA
(
"FD5CC6F5E7E2805E920AC5DC83D5AF1106F9C92F0C04F9D5E1FD4261B4B4464A"
)
//b.Logf("end time: %s \n", time.Now())
// publicKey := local.Public()
// publicKeyECDSA, _ := publicKey.(*ecdsa.PublicKey)
//fromAddr := crypto.PubkeyToAddress(*publicKeyECDSA)
var
compares
int64
remote
,
_
:=
crypto
.
GenerateKey
()
tx
,
err
:=
pricedTransaction
(
crypto
.
PubkeyToAddress
(
remote
.
PublicKey
),
0
,
100000
,
big
.
NewInt
(
1
),
local
)
if
err
!=
nil
{
b
.
Fatal
(
err
)
}
for
i
:=
0
;
i
<
b
.
N
;
i
++
{
for
i
:=
0
;
i
<
b
.
N
;
i
++
{
s
:=
[]
int
{
5
,
4
,
3
,
2
,
1
}
//b.Logf("idx %d time: %s \n", i, time.Now())
sort
.
Slice
(
s
,
func
(
i
,
j
int
)
bool
{
fmt
.
Sprintf
(
"%v"
,
tx
)
compares
++
return
s
[
i
]
<
s
[
j
]
})
}
}
//b.StopTimer()
//b.Logf("end time: %s \n", time.Now())
// var compares int64
// for i := 0; i < b.N; i++ {
// s := []int{5, 4, 3, 2, 1}
// sort.Slice(s, func(i, j int) bool {
// compares++
// return s[i] < s[j]
// })
// }
// This metric is per-operation, so divide by b.N and
// This metric is per-operation, so divide by b.N and
// report it as a "/op" unit.
// report it as a "/op" unit.
b
.
ReportMetric
(
float64
(
compares
)
/
float64
(
b
.
N
),
"compares/op"
)
//
b.ReportMetric(float64(compares)/float64(b.N), "compares/op")
}
}
func
BenchmarkCalculate
(
b
*
testing
.
B
)
{
func
BenchmarkCalculate
(
b
*
testing
.
B
)
{
...
...
benchmark/none.html
View file @
a3a612d8
...
@@ -21,57 +21,71 @@
...
@@ -21,57 +21,71 @@
<tbody>
<tbody>
<tr><th><th
colspan=
'2'
class=
'metric'
>
time/op
<th>
delta
<tr><th><th
colspan=
'2'
class=
'metric'
>
time/op
<th>
delta
<tr
class=
'worse'
><td>
Repeated/input_size_100-8
<td>
2
08µs ± 3%
<td>
213µs ± 3%
<td
class=
'delta'
>
+2.21
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_100-8
<td>
2
11µs ± 4%
<td>
214µs ± 5%
<td
class=
'delta'
>
+1.35
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_200-8
<td>
2
73µs ± 2%
<td>
280µs ± 6%
<td
class=
'delta'
>
+2.53
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_200-8
<td>
2
84µs ± 3%
<td>
284µs ± 4%
<td
class=
'delta'
>
+0.15
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_500-8
<td>
490µs ± 2%
<td>
513µs ± 2%
<td
class=
'delta'
>
+4.75
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_500-8
<td>
521µs ± 3%
<td>
524µs ± 4%
<td
class=
'delta'
>
+0.48
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_1000-8
<td>
841µs ± 2%
<td>
883µs ± 2%
<td
class=
'delta'
>
+5.02
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_1000-8
<td>
1.00ms ±11%
<td>
1.04ms ± 4%
<td
class=
'delta'
>
+3.93
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_2000-8
<td>
1.
55ms ± 1%
<td>
1.64ms ± 2%
<td
class=
'delta'
>
+5.26
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_2000-8
<td>
1.
78ms ±14%
<td>
1.95ms ± 2%
<td
class=
'delta'
>
+9.25
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_5000-8
<td>
3.
65ms ± 1%
<td>
3.87ms ± 1%
<td
class=
'delta'
>
+5.83
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_5000-8
<td>
3.
99ms ± 3%
<td>
4.58ms ± 2%
<td
class=
'delta'
>
+14.91
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_10000-8
<td>
7.
05ms ± 1%
<td>
7.51ms ± 1%
<td
class=
'delta'
>
+6.53
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_10000-8
<td>
7.
72ms ± 2%
<td>
8.86ms ± 3%
<td
class=
'delta'
>
+14.69
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_20000-8
<td>
1
3.7ms ± 2%
<td>
14.5ms ± 1%
<td
class=
'delta'
>
+5.94
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_20000-8
<td>
1
4.9ms ± 4%
<td>
17.0ms ± 2%
<td
class=
'delta'
>
+13.45
%
<td
class=
'note'
>
<tr
class=
'unchanged'
><td>
[Geo mean]
<td>
1.
38ms
<td>
1.44ms
<td
class=
'delta'
>
+4.75
%
<td
class=
'note'
>
<tr
class=
'unchanged'
><td>
[Geo mean]
<td>
1.
50ms
<td>
1.61ms
<td
class=
'delta'
>
+7.10
%
<td
class=
'note'
>
<tr><td>
<tr><td>
</tbody>
</tbody>
<tbody>
<tbody>
<tr><th><th
colspan=
'2'
class=
'metric'
>
speed
<th>
delta
<tr><th><th
colspan=
'2'
class=
'metric'
>
speed
<th>
delta
<tr
class=
'worse'
><td>
Repeated/input_size_100-8
<td>
42.3MB/s ± 3%
<td>
41.4MB/s ± 3%
<td
class=
'delta'
>
−2.15%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_100-8
<td>
64.2MB/s ± 4%
<td>
63.3MB/s ± 5%
<td
class=
'delta'
>
−1.31%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_200-8
<td>
64.5MB/s ± 2%
<td>
62.9MB/s ± 5%
<td
class=
'delta'
>
−2.41%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_200-8
<td>
95.3MB/s ± 3%
<td>
95.2MB/s ± 4%
<td
class=
'delta'
>
−0.15%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_500-8
<td>
89.8MB/s ± 2%
<td>
85.7MB/s ± 2%
<td
class=
'delta'
>
−4.54%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_500-8
<td>
130MB/s ± 3%
<td>
129MB/s ± 3%
<td
class=
'delta'
>
−0.45%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_1000-8
<td>
105MB/s ± 2%
<td>
100MB/s ± 2%
<td
class=
'delta'
>
−4.79%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_1000-8
<td>
136MB/s ±12%
<td>
130MB/s ± 4%
<td
class=
'delta'
>
−4.15%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_2000-8
<td>
113MB/s ± 1%
<td>
108MB/s ± 2%
<td
class=
'delta'
>
−4.99%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_2000-8
<td>
153MB/s ±13%
<td>
139MB/s ± 2%
<td
class=
'delta'
>
−8.97%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_5000-8
<td>
120MB/s ± 1%
<td>
114MB/s ± 1%
<td
class=
'delta'
>
−5.51%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_5000-8
<td>
169MB/s ± 2%
<td>
147MB/s ± 3%
<td
class=
'delta'
>
−13.15%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_10000-8
<td>
125MB/s ± 1%
<td>
117MB/s ± 1%
<td
class=
'delta'
>
−6.13%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_10000-8
<td>
175MB/s ± 4%
<td>
152MB/s ± 3%
<td
class=
'delta'
>
−12.70%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_20000-8
<td>
129MB/s ± 2%
<td>
122MB/s ± 1%
<td
class=
'delta'
>
−5.62%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_20000-8
<td>
179MB/s ±10%
<td>
159MB/s ± 2%
<td
class=
'delta'
>
−11.06%
<td
class=
'note'
>
<tr
class=
'unchanged'
><td>
[Geo mean]
<td>
93.1MB/s
<td>
88.9MB/s
<td
class=
'delta'
>
−4.53%
<td
class=
'note'
>
<tr
class=
'unchanged'
><td>
[Geo mean]
<td>
131MB/s
<td>
122MB/s
<td
class=
'delta'
>
−6.64%
<td
class=
'note'
>
<tr><td>
</tbody>
<tbody>
<tr><th><th
colspan=
'2'
class=
'metric'
>
tps
<th>
delta
<tr
class=
'better'
><td>
Repeated/input_size_100-8
<td>
4.74k ± 4%
<td>
4.68k ± 5%
<td
class=
'delta'
>
−1.32%
<td
class=
'note'
>
<tr
class=
'better'
><td>
Repeated/input_size_200-8
<td>
3.52k ± 3%
<td>
3.52k ± 4%
<td
class=
'delta'
>
−0.15%
<td
class=
'note'
>
<tr
class=
'better'
><td>
Repeated/input_size_500-8
<td>
1.92k ± 3%
<td>
1.91k ± 3%
<td
class=
'delta'
>
−0.48%
<td
class=
'note'
>
<tr
class=
'better'
><td>
Repeated/input_size_1000-8
<td>
1.00k ±12%
<td>
0.96k ± 4%
<td
class=
'delta'
>
−4.15%
<td
class=
'note'
>
<tr
class=
'better'
><td>
Repeated/input_size_2000-8
<td>
565 ±13%
<td>
514 ± 2%
<td
class=
'delta'
>
−8.97%
<td
class=
'note'
>
<tr
class=
'better'
><td>
Repeated/input_size_5000-8
<td>
251 ± 2%
<td>
218 ± 3%
<td
class=
'delta'
>
−13.15%
<td
class=
'note'
>
<tr
class=
'better'
><td>
Repeated/input_size_10000-8
<td>
129 ± 4%
<td>
113 ± 3%
<td
class=
'delta'
>
−12.69%
<td
class=
'note'
>
<tr
class=
'better'
><td>
Repeated/input_size_20000-8
<td>
66.4 ±10%
<td>
59.0 ± 2%
<td
class=
'delta'
>
−11.09%
<td
class=
'note'
>
<tr
class=
'unchanged'
><td>
[Geo mean]
<td>
667
<td>
623
<td
class=
'delta'
>
−6.64%
<td
class=
'note'
>
<tr><td>
<tr><td>
</tbody>
</tbody>
<tbody>
<tbody>
<tr><th><th
colspan=
'2'
class=
'metric'
>
alloc/op
<th>
delta
<tr><th><th
colspan=
'2'
class=
'metric'
>
alloc/op
<th>
delta
<tr
class=
'worse'
><td>
Repeated/input_size_100-8
<td>
2
26kB ± 0%
<td>
240kB ± 0%
<td
class=
'delta'
>
+6.07
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_100-8
<td>
2
54kB ± 0%
<td>
254kB ± 0%
<td
class=
'delta'
>
+0.00
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_200-8
<td>
3
10kB ± 0%
<td>
337kB ± 0%
<td
class=
'delta'
>
+8.84
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_200-8
<td>
3
65kB ± 0%
<td>
365kB ± 0%
<td
class=
'delta'
>
+0.00
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_500-8
<td>
554kB ± 0%
<td>
627kB ± 0%
<td
class=
'delta'
>
+13.35
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_500-8
<td>
702kB ± 0%
<td>
702kB ± 0%
<td
class=
'delta'
>
+0.00
%
<td
class=
'note'
>
<tr
class=
'
worse'
><td>
Repeated/input_size_1000-8
<td>
947kB ± 0%
<td>
1087kB ± 0%
<td
class=
'delta'
>
+14.72
%
<td
class=
'note'
>
<tr
class=
'
better'
><td>
Repeated/input_size_1000-8
<td>
1.23MB ± 0%
<td>
1.23MB ± 0%
<td
class=
'delta'
>
−0.00
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_2000-8
<td>
1.74MB ± 0%
<td>
2.01MB ± 0%
<td
class=
'delta'
>
+15.59
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_2000-8
<td>
2.28MB ± 0%
<td>
2.28MB ± 0%
<td
class=
'delta'
>
+0.00
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_5000-8
<td>
4.11MB ± 0%
<td>
4.80MB ± 0%
<td
class=
'delta'
>
+16.54
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_5000-8
<td>
5.48MB ± 0%
<td>
5.48MB ± 0%
<td
class=
'delta'
>
+0.00
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_10000-8
<td>
8.07MB ± 0%
<td>
9.42MB ± 0%
<td
class=
'delta'
>
+16.76
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_10000-8
<td>
10.8MB ± 0%
<td>
10.8MB ± 0%
<td
class=
'delta'
>
+0.00
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_20000-8
<td>
16.0MB ± 0%
<td>
18.7MB ± 0%
<td
class=
'delta'
>
+16.92
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_20000-8
<td>
21.4MB ± 0%
<td>
21.4MB ± 0%
<td
class=
'delta'
>
+0.00
%
<td
class=
'note'
>
<tr
class=
'unchanged'
><td>
[Geo mean]
<td>
1.
55MB
<td>
1.76MB
<td
class=
'delta'
>
+13.53
%
<td
class=
'note'
>
<tr
class=
'unchanged'
><td>
[Geo mean]
<td>
1.
97MB
<td>
1.97MB
<td
class=
'delta'
>
+0.00
%
<td
class=
'note'
>
<tr><td>
<tr><td>
</tbody>
</tbody>
<tbody>
<tbody>
<tr><th><th
colspan=
'2'
class=
'metric'
>
allocs/op
<th>
delta
<tr><th><th
colspan=
'2'
class=
'metric'
>
allocs/op
<th>
delta
<tr
class=
'
worse'
><td>
Repeated/input_size_100-8
<td>
2.11k ± 0%
<td>
2.11k ± 0%
<td
class=
'delta'
>
+0.11
%
<td
class=
'note'
>
<tr
class=
'
unchanged'
><td>
Repeated/input_size_100-8
<td>
2.12k ± 0%
<td>
2.12k ± 0%
<td
class=
'delta'
>
0.00
%
<td
class=
'note'
>
<tr
class=
'
worse'
><td>
Repeated/input_size_200-8
<td>
3.61k ± 0%
<td>
3.61k ± 0%
<td
class=
'delta'
>
+0.08
%
<td
class=
'note'
>
<tr
class=
'
unchanged'
><td>
Repeated/input_size_200-8
<td>
3.62k ± 0%
<td>
3.62k ± 0%
<td
class=
'delta'
>
0.00
%
<td
class=
'note'
>
<tr
class=
'
worse'
><td>
Repeated/input_size_500-8
<td>
8.13k ± 0%
<td>
8.13k ± 0%
<td
class=
'delta'
>
+0.05
%
<td
class=
'note'
>
<tr
class=
'
unchanged'
><td>
Repeated/input_size_500-8
<td>
8.14k ± 0%
<td>
8.14k ± 0%
<td
class=
'delta'
>
0.00
%
<td
class=
'note'
>
<tr
class=
'
worse'
><td>
Repeated/input_size_1000-8
<td>
15.6k ± 0%
<td>
15.6k ± 0%
<td
class=
'delta'
>
+0.03
%
<td
class=
'note'
>
<tr
class=
'
better'
><td>
Repeated/input_size_1000-8
<td>
15.6k ± 0%
<td>
15.6k ± 0%
<td
class=
'delta'
>
−0.00
%
<td
class=
'note'
>
<tr
class=
'
worse'
><td>
Repeated/input_size_2000-8
<td>
30.7k ± 0%
<td>
30.7k ± 0%
<td
class=
'delta'
>
+0.01
%
<td
class=
'note'
>
<tr
class=
'
better'
><td>
Repeated/input_size_2000-8
<td>
30.7k ± 0%
<td>
30.7k ± 0%
<td
class=
'delta'
>
−0.00
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_5000-8
<td>
75.7k ± 0%
<td>
75.7k ± 0%
<td
class=
'delta'
>
+0.0
1
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_5000-8
<td>
75.7k ± 0%
<td>
75.7k ± 0%
<td
class=
'delta'
>
+0.0
0
%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_10000-8
<td>
151k ± 0%
<td>
151k ± 0%
<td
class=
'delta'
>
+0.00%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_10000-8
<td>
151k ± 0%
<td>
151k ± 0%
<td
class=
'delta'
>
+0.00%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_20000-8
<td>
301k ± 0%
<td>
301k ± 0%
<td
class=
'delta'
>
+0.00%
<td
class=
'note'
>
<tr
class=
'worse'
><td>
Repeated/input_size_20000-8
<td>
301k ± 0%
<td>
301k ± 0%
<td
class=
'delta'
>
+0.00%
<td
class=
'note'
>
<tr
class=
'unchanged'
><td>
[Geo mean]
<td>
23.8k
<td>
23.8k
<td
class=
'delta'
>
+0.0
4
%
<td
class=
'note'
>
<tr
class=
'unchanged'
><td>
[Geo mean]
<td>
23.8k
<td>
23.8k
<td
class=
'delta'
>
+0.0
0
%
<td
class=
'note'
>
<tr><td>
<tr><td>
</tbody>
</tbody>
...
...
benchmark/stat_test.go
View file @
a3a612d8
...
@@ -4,6 +4,7 @@ import (
...
@@ -4,6 +4,7 @@ import (
"context"
"context"
"crypto/ecdsa"
"crypto/ecdsa"
"fmt"
"fmt"
"testing"
"testing"
"time"
"time"
...
@@ -14,6 +15,10 @@ import (
...
@@ -14,6 +15,10 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto"
"google.golang.org/grpc"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/grpc/credentials/insecure"
//"google.golang.org/grpc/encoding/proto"
//"github.com/protocolbuffers/protobuf-go/proto"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb"
"google.golang.org/protobuf/types/known/anypb"
)
)
...
@@ -56,6 +61,7 @@ func RepeatedEthTx(txl int, b *testing.B) {
...
@@ -56,6 +61,7 @@ func RepeatedEthTx(txl int, b *testing.B) {
b
.
Fatal
(
err
)
b
.
Fatal
(
err
)
}
}
beginTime
:=
time
.
Now
()
b
.
ResetTimer
()
b
.
ResetTimer
()
b
.
RunParallel
(
func
(
pb
*
testing
.
PB
)
{
b
.
RunParallel
(
func
(
pb
*
testing
.
PB
)
{
...
@@ -100,9 +106,17 @@ func RepeatedEthTx(txl int, b *testing.B) {
...
@@ -100,9 +106,17 @@ func RepeatedEthTx(txl int, b *testing.B) {
txs
=
append
(
txs
,
&
base
.
TransactionEth
{
Tx
:
&
base
.
EthTx
{
Inner
:
&
inner
}})
txs
=
append
(
txs
,
&
base
.
TransactionEth
{
Tx
:
&
base
.
EthTx
{
Inner
:
&
inner
}})
}
}
b
.
SetBytes
(
88
*
int64
(
txl
))
req
:=
&
base
.
RepeatedEthTx
{
Txs
:
txs
}
res
,
err
:=
c
.
SendRepeatedEthTx
(
ctx
,
&
base
.
RepeatedEthTx
{
Txs
:
txs
})
out
,
err
:=
proto
.
Marshal
(
req
)
if
err
!=
nil
{
b
.
Fatal
(
err
)
}
b
.
SetBytes
(
int64
(
len
(
out
)))
res
,
err
:=
c
.
SendRepeatedEthTx
(
ctx
,
req
)
if
err
!=
nil
{
if
err
!=
nil
{
b
.
Fatal
(
err
)
b
.
Fatal
(
err
)
...
@@ -119,6 +133,8 @@ func RepeatedEthTx(txl int, b *testing.B) {
...
@@ -119,6 +133,8 @@ func RepeatedEthTx(txl int, b *testing.B) {
// })
// })
}
}
})
})
b
.
ReportMetric
(
float64
(
b
.
N
)
/
float64
(
time
.
Since
(
beginTime
)
.
Seconds
()),
"tps"
)
}
}
func
RepeatedTxEthAsAny
(
txl
int
,
b
*
testing
.
B
)
{
func
RepeatedTxEthAsAny
(
txl
int
,
b
*
testing
.
B
)
{
...
@@ -140,6 +156,8 @@ func RepeatedTxEthAsAny(txl int, b *testing.B) {
...
@@ -140,6 +156,8 @@ func RepeatedTxEthAsAny(txl int, b *testing.B) {
//}
//}
// once.Do(onceFunc)
// once.Do(onceFunc)
beginTime
:=
time
.
Now
()
b
.
ResetTimer
()
b
.
ResetTimer
()
// The loop body is executed b.N times total across all goroutines.
// The loop body is executed b.N times total across all goroutines.
...
@@ -185,14 +203,22 @@ func RepeatedTxEthAsAny(txl int, b *testing.B) {
...
@@ -185,14 +203,22 @@ func RepeatedTxEthAsAny(txl int, b *testing.B) {
txs
=
append
(
txs
,
&
base
.
TransactionEth
{
Tx
:
&
base
.
EthTx
{
Inner
:
&
inner
}})
txs
=
append
(
txs
,
&
base
.
TransactionEth
{
Tx
:
&
base
.
EthTx
{
Inner
:
&
inner
}})
}
}
b
.
SetBytes
(
88
*
int64
(
txl
))
ethTxAsAny
,
err
:=
anypb
.
New
(
&
base
.
RepeatedEthTx
{
Txs
:
txs
})
ethTxAsAny
,
err
:=
anypb
.
New
(
&
base
.
RepeatedEthTx
{
Txs
:
txs
})
if
err
!=
nil
{
if
err
!=
nil
{
b
.
Fatal
(
err
)
b
.
Fatal
(
err
)
}
}
res
,
err
:=
c
.
SendTxAsAny
(
ctx
,
&
base
.
Transaction
{
Tx
:
ethTxAsAny
})
req
:=
&
base
.
Transaction
{
Tx
:
ethTxAsAny
}
out
,
err
:=
proto
.
Marshal
(
req
)
if
err
!=
nil
{
b
.
Fatal
(
err
)
}
b
.
SetBytes
(
int64
(
len
(
out
)))
res
,
err
:=
c
.
SendTxAsAny
(
ctx
,
req
)
if
err
!=
nil
{
if
err
!=
nil
{
b
.
Fatal
(
err
)
b
.
Fatal
(
err
)
...
@@ -210,6 +236,9 @@ func RepeatedTxEthAsAny(txl int, b *testing.B) {
...
@@ -210,6 +236,9 @@ func RepeatedTxEthAsAny(txl int, b *testing.B) {
}
}
})
})
b
.
ReportMetric
(
float64
(
b
.
N
)
/
float64
(
time
.
Since
(
beginTime
)
.
Seconds
()),
"tps"
)
}
}
// go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count 5 | tee old.txt
// go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count 5 | tee old.txt
...
@@ -228,10 +257,11 @@ benchstat -geomean -delta-test none -html RepeatedEthTx.txt RepeatedTxEthAsAny.t
...
@@ -228,10 +257,11 @@ benchstat -geomean -delta-test none -html RepeatedEthTx.txt RepeatedTxEthAsAny.t
func
BenchmarkRepeated
(
b
*
testing
.
B
)
{
func
BenchmarkRepeated
(
b
*
testing
.
B
)
{
for
_
,
v
:=
range
tableTx
{
for
_
,
v
:=
range
tableTx
{
b
.
Run
(
fmt
.
Sprintf
(
"input_size_%d"
,
v
.
input
),
func
(
b
*
testing
.
B
)
{
b
.
Run
(
fmt
.
Sprintf
(
"input_size_%d"
,
v
.
input
),
func
(
b
*
testing
.
B
)
{
//go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count
1
0 | tee RepeatedEthTx.txt
//go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count
3
0 | tee RepeatedEthTx.txt
//RepeatedEthTx(v.input, b)
//RepeatedEthTx(v.input, b)
//go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count
1
0 | tee RepeatedTxEthAsAny.txt
//go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count
3
0 | tee RepeatedTxEthAsAny.txt
RepeatedTxEthAsAny
(
v
.
input
,
b
)
RepeatedTxEthAsAny
(
v
.
input
,
b
)
})
})
}
}
}
}
...
...
benchmark/test_test.go
View file @
a3a612d8
package
benchmark_test
package
benchmark_test
import
(
import
(
"bytes"
"context"
"context"
"crypto/ecdsa"
"crypto/ecdsa"
"encoding/gob"
"errors"
"errors"
"fmt"
"fmt"
"time"
"time"
...
@@ -14,6 +16,7 @@ import (
...
@@ -14,6 +16,7 @@ import (
"google.golang.org/grpc"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb"
"google.golang.org/protobuf/types/known/anypb"
"google.golang.org/protobuf/types/known/emptypb"
"google.golang.org/protobuf/types/known/emptypb"
...
@@ -311,9 +314,9 @@ func TestAnyTx(t *testing.T) {
...
@@ -311,9 +314,9 @@ func TestAnyTx(t *testing.T) {
func
TestSizeOf
(
t
*
testing
.
T
)
{
func
TestSizeOf
(
t
*
testing
.
T
)
{
local
,
_
:=
crypto
.
HexToECDSA
(
"FD5CC6F5E7E2805E920AC5DC83D5AF1106F9C92F0C04F9D5E1FD4261B4B4464A"
)
local
,
_
:=
crypto
.
HexToECDSA
(
"FD5CC6F5E7E2805E920AC5DC83D5AF1106F9C92F0C04F9D5E1FD4261B4B4464A"
)
//
publicKey := local.Public()
publicKey
:=
local
.
Public
()
//
publicKeyECDSA, _ := publicKey.(*ecdsa.PublicKey)
publicKeyECDSA
,
_
:=
publicKey
.
(
*
ecdsa
.
PublicKey
)
//
fromAddr := crypto.PubkeyToAddress(*publicKeyECDSA)
fromAddr
:=
crypto
.
PubkeyToAddress
(
*
publicKeyECDSA
)
remote
,
_
:=
crypto
.
GenerateKey
()
remote
,
_
:=
crypto
.
GenerateKey
()
...
@@ -323,8 +326,79 @@ func TestSizeOf(t *testing.T) {
...
@@ -323,8 +326,79 @@ func TestSizeOf(t *testing.T) {
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
fmt
.
Printf
(
"%T
\n
"
,
unsafe
.
Sizeof
(
*
tx
))
inner
:=
base
.
EthTxData
{
AccountNonce
:
tx
.
Nonce
(),
Price
:
tx
.
GasPrice
()
.
Bytes
(),
GasLimit
:
tx
.
Gas
(),
Payload
:
tx
.
Data
(),
}
v
,
r
,
sigs
:=
tx
.
RawSignatureValues
()
inner
.
V
=
v
.
Bytes
()
inner
.
R
=
r
.
Bytes
()
inner
.
S
=
sigs
.
Bytes
()
inner
.
Amount
=
tx
.
Value
()
.
Bytes
()
fmt
.
Println
(
unsafe
.
Sizeof
(
*
tx
))
addr
:=
base
.
Address
{
Address
:
tx
.
To
()
.
Bytes
()}
inner
.
Recipient
=
&
addr
inner
.
From
=
fromAddr
.
Bytes
()
out
,
err
:=
proto
.
Marshal
(
&
base
.
TransactionEth
{
Tx
:
&
base
.
EthTx
{
Inner
:
&
inner
}})
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
fmt
.
Printf
(
"TransactionEth proto buff encoding: %d
\n
"
,
len
(
out
))
//fmt.Printf("%T \n", unsafe.Sizeof(tx.Nonce()))
sss
,
err
:=
getRealSizeOf
(
tx
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
fmt
.
Println
(
"getRealSizeOf tx "
,
sss
)
ssss
,
err
:=
getRealSizeOf
(
base
.
TransactionEth
{
Tx
:
&
base
.
EthTx
{
Inner
:
&
inner
}})
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
fmt
.
Println
(
"getRealSizeOf TransactionEth"
,
ssss
)
fmt
.
Println
(
"unsafe.Sizeof"
,
unsafe
.
Sizeof
(
*
tx
))
fmt
.
Println
(
"unsafe.Sizeof v"
,
unsafe
.
Sizeof
(
*
v
))
fmt
.
Println
(
"unsafe.Sizeof r"
,
unsafe
.
Sizeof
(
*
r
))
fmt
.
Println
(
"unsafe.Sizeof sigs"
,
unsafe
.
Sizeof
(
*
sigs
))
fmt
.
Println
(
"tx size"
,
tx
.
Size
())
// v, r, sigs
}
// type ASDF struct {
// A uint64
// B uint64
// C uint64
// D uint64
// E uint64
// F string
// }
// func (s *ASDF) size() int {
// size := int(unsafe.Sizeof(*s))
// size += len(s.F)
// return size
// }
func
getRealSizeOf
(
v
interface
{})
(
int
,
error
)
{
b
:=
new
(
bytes
.
Buffer
)
if
err
:=
gob
.
NewEncoder
(
b
)
.
Encode
(
v
);
err
!=
nil
{
return
0
,
err
}
return
b
.
Len
(),
nil
}
}
benchmark/ttest.html
View file @
a3a612d8
This diff is collapsed.
Click to expand it.
benchmark/utest.html
View file @
a3a612d8
This diff is collapsed.
Click to expand it.
go.mod
View file @
a3a612d8
...
@@ -4,7 +4,7 @@ go 1.18
...
@@ -4,7 +4,7 @@ go 1.18
require (
require (
github.com/ethereum/go-ethereum v1.10.26
github.com/ethereum/go-ethereum v1.10.26
google.golang.org/grpc v1.5
0.1
google.golang.org/grpc v1.5
1.0
google.golang.org/protobuf v1.28.1
google.golang.org/protobuf v1.28.1
)
)
...
@@ -15,11 +15,11 @@ require (
...
@@ -15,11 +15,11 @@ require (
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/net v0.
2
.0 // indirect
golang.org/x/net v0.
3
.0 // indirect
golang.org/x/sys v0.
2
.0 // indirect
golang.org/x/sys v0.
3
.0 // indirect
golang.org/x/text v0.
4
.0 // indirect
golang.org/x/text v0.
5
.0 // indirect
golang.org/x/tools v0.1.12 // indirect
golang.org/x/tools v0.1.12 // indirect
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect
google.golang.org/genproto v0.0.0-20221
118155620-16455021b5e6
// indirect
google.golang.org/genproto v0.0.0-20221
205194025-8222ab48f5fc
// indirect
google.golang.org/grpc/examples v0.0.0-20221202020918-001d234e1f2d // indirect
google.golang.org/grpc/examples v0.0.0-20221202020918-001d234e1f2d // indirect
)
)
go.sum
View file @
a3a612d8
...
@@ -75,6 +75,8 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d h1:4SFsTMi4UahlKoloni7L4eYzh
...
@@ -75,6 +75,8 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d h1:4SFsTMi4UahlKoloni7L4eYzh
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.3.0 h1:VWL6FNY2bEEmsGVKabSlHu5Irp34xmMRoqb/9lF9lxk=
golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
...
@@ -90,6 +92,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbuf
...
@@ -90,6 +92,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbuf
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
...
@@ -97,6 +101,8 @@ golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
...
@@ -97,6 +101,8 @@ golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
...
@@ -122,11 +128,15 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaR
...
@@ -122,11 +128,15 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaR
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20221205194025-8222ab48f5fc h1:nUKKji0AarrQKh6XpFEpG3p1TNztxhe7C8TcUvDgXqw=
google.golang.org/genproto v0.0.0-20221205194025-8222ab48f5fc/go.mod h1:1dOng4TWOomJrDGhpXjfCD35wQC6jnC7HpRmOFRqEV0=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY=
google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY=
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.51.0 h1:E1eGv1FTqoLIdnBCZufiSHgKjlqG6fKFf6pPWtMTh8U=
google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
google.golang.org/grpc/examples v0.0.0-20221202020918-001d234e1f2d h1:IbYdIWUmlXSfKNxxWYJLWpwekZh/7ZvFdmbAcSo8ygA=
google.golang.org/grpc/examples v0.0.0-20221202020918-001d234e1f2d h1:IbYdIWUmlXSfKNxxWYJLWpwekZh/7ZvFdmbAcSo8ygA=
google.golang.org/grpc/examples v0.0.0-20221202020918-001d234e1f2d/go.mod h1:jMMKnsR3nPEOSsgT/Le2GxpknJOBOQms0nWb0JRgeUM=
google.golang.org/grpc/examples v0.0.0-20221202020918-001d234e1f2d/go.mod h1:jMMKnsR3nPEOSsgT/Le2GxpknJOBOQms0nWb0JRgeUM=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment