diff --git a/snowflake.go b/snowflake.go index 21cc5e8..26da1fe 100644 --- a/snowflake.go +++ b/snowflake.go @@ -127,7 +127,8 @@ func (f ID) Step() int64 { // MarshalJSON returns a json byte array string of the snowflake ID. func (f ID) MarshalJSON() ([]byte, error) { - buff := []byte("\"") + buff := make([]byte, 0, 22) + buff = append(buff, '"') buff = strconv.AppendInt(buff, int64(f), 10) buff = append(buff, '"') return buff, nil diff --git a/snowflake_test.go b/snowflake_test.go index 93c459e..40c1a95 100644 --- a/snowflake_test.go +++ b/snowflake_test.go @@ -44,26 +44,26 @@ func BenchmarkGenerate(b *testing.B) { } func BenchmarkUnmarshal(b *testing.B) { - + // Generate the ID to unmarshal node, _ := NewNode(1) id := node.Generate() + bytes, _ := id.MarshalJSON() + var id2 ID b.ReportAllocs() - b.ResetTimer() for n := 0; n < b.N; n++ { - _ = id2.UnmarshalJSON(id.Bytes()) + _ = id2.UnmarshalJSON(bytes) } } func BenchmarkMarshal(b *testing.B) { - + // Generate the ID to marshal node, _ := NewNode(1) id := node.Generate() b.ReportAllocs() - b.ResetTimer() for n := 0; n < b.N; n++ { _, _ = id.MarshalJSON()