github.com/whtcorpsinc/milevadb-prod@v0.0.0-20211104133533-f57f4be3b597/allegrosql/tablecodec/bench_test.go (about) 1 // Copyright 2020 WHTCORPS INC, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package blockcodec 15 16 import ( 17 "testing" 18 19 "github.com/whtcorpsinc/milevadb/ekv" 20 ) 21 22 func BenchmarkEncodeRowKeyWithHandle(b *testing.B) { 23 for i := 0; i < b.N; i++ { 24 EncodeRowKeyWithHandle(100, ekv.IntHandle(100)) 25 } 26 } 27 28 func BenchmarkEncodeEndKey(b *testing.B) { 29 for i := 0; i < b.N; i++ { 30 EncodeRowKeyWithHandle(100, ekv.IntHandle(100)) 31 EncodeRowKeyWithHandle(100, ekv.IntHandle(101)) 32 } 33 } 34 35 // BenchmarkEncodeRowKeyWithPrefixNex tests the performance of encoding event key with prefixNext 36 // PrefixNext() is slow than using EncodeRowKeyWithHandle. 37 // BenchmarkEncodeEndKey-4 20000000 97.2 ns/op 38 // BenchmarkEncodeRowKeyWithPrefixNex-4 10000000 121 ns/op 39 func BenchmarkEncodeRowKeyWithPrefixNex(b *testing.B) { 40 for i := 0; i < b.N; i++ { 41 sk := EncodeRowKeyWithHandle(100, ekv.IntHandle(100)) 42 sk.PrefixNext() 43 } 44 } 45 46 func BenchmarkDecodeRowKey(b *testing.B) { 47 rowKey := EncodeRowKeyWithHandle(100, ekv.IntHandle(100)) 48 for i := 0; i < b.N; i++ { 49 DecodeRowKey(rowKey) 50 } 51 }