Merge pull request #66 from benbjohnson/append-entries-benchmarking
Append entries benchmarkingpull/820/head
commit
459c84b32d
|
@ -0,0 +1,36 @@
|
|||
package raft
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func BenchmarkAppendEntriesEncoding(b *testing.B) {
|
||||
req, tmp := createTestAppendEntriesRequest(2000)
|
||||
for i := 0; i < b.N; i++ {
|
||||
var buf bytes.Buffer
|
||||
json.NewEncoder(&buf).Encode(req)
|
||||
}
|
||||
b.SetBytes(int64(len(tmp)))
|
||||
}
|
||||
|
||||
func BenchmarkAppendEntriesDecoding(b *testing.B) {
|
||||
req, buf := createTestAppendEntriesRequest(2000)
|
||||
for i := 0; i < b.N; i++ {
|
||||
json.NewDecoder(bytes.NewReader(buf)).Decode(req)
|
||||
}
|
||||
b.SetBytes(int64(len(buf)))
|
||||
}
|
||||
|
||||
func createTestAppendEntriesRequest(entryCount int) (*AppendEntriesRequest, []byte) {
|
||||
entries := make([]*LogEntry, 0)
|
||||
for i := 0; i < entryCount; i++ {
|
||||
entries = append(entries, newLogEntry(nil, 1, 2, &joinCommand{Name: "localhost:1000"}))
|
||||
}
|
||||
req := newAppendEntriesRequest(1, "leader", 1, 1, entries, 1)
|
||||
buf, _ := json.Marshal(req)
|
||||
|
||||
return req, buf
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
package raft
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestEncodingAndDecodingSpeed(t *testing.T) {
|
||||
entries := make([]*LogEntry, 2000)
|
||||
|
||||
e := newLogEntry(nil, 1, 2, &joinCommand{Name: "localhost:1000"})
|
||||
|
||||
for i := 0; i < 2000; i++ {
|
||||
entries[i] = e
|
||||
}
|
||||
|
||||
req := newAppendEntriesRequest(1, "leader", 1, 1, entries, 1)
|
||||
|
||||
var b bytes.Buffer
|
||||
|
||||
startTime := time.Now()
|
||||
|
||||
json.NewEncoder(&b).Encode(req)
|
||||
|
||||
fmt.Println("Encoding ", b.Len()/1000, " kb took ", time.Now().Sub(startTime))
|
||||
|
||||
startTime = time.Now()
|
||||
|
||||
resp := &AppendEntriesResponse{}
|
||||
|
||||
length := b.Len()
|
||||
|
||||
json.NewDecoder(&b).Decode(&resp)
|
||||
|
||||
fmt.Println("Decoding ", length/1000, " kb took ", time.Now().Sub(startTime))
|
||||
|
||||
}
|
Loading…
Reference in New Issue