diff --git a/pkg/inet.go b/pkg/inet.go index b36f568..5f53d01 100644 --- a/pkg/inet.go +++ b/pkg/inet.go @@ -1,35 +1,17 @@ package rpmdb import ( - "bytes" "encoding/binary" - "log" ) func Htonl(val int32) int32 { - buf := new(bytes.Buffer) - if err := binary.Write(buf, binary.LittleEndian, val); err != nil { - log.Println(err) - return 0 - } - - if err := binary.Read(buf, binary.BigEndian, &val); err != nil { - log.Println(err) - return 0 - } - return val + var buf [4]byte + binary.LittleEndian.PutUint32(buf[:], uint32(val)) + return int32(binary.BigEndian.Uint32(buf[:])) } func HtonlU(val uint32) uint32 { - buf := new(bytes.Buffer) - if err := binary.Write(buf, binary.LittleEndian, val); err != nil { - log.Println(err) - return 0 - } - - if err := binary.Read(buf, binary.BigEndian, &val); err != nil { - log.Println(err) - return 0 - } - return val + var buf [4]byte + binary.LittleEndian.PutUint32(buf[:], val) + return binary.BigEndian.Uint32(buf[:]) } diff --git a/pkg/rpmdb_test.go b/pkg/rpmdb_test.go index b0bb275..51f987a 100644 --- a/pkg/rpmdb_test.go +++ b/pkg/rpmdb_test.go @@ -10,8 +10,8 @@ import ( _ "github.com/glebarez/go-sqlite" ) -func TestPackageList(t *testing.T) { - tests := []struct { +var ( + packageTests = []struct { name string file string // Test input file pkgList []*PackageInfo @@ -87,8 +87,10 @@ func TestPackageList(t *testing.T) { pkgList: Fedora35PlusMongoDBWithSQLite3(), }, } +) - for _, tt := range tests { +func TestPackageList(t *testing.T) { + for _, tt := range packageTests { t.Run(tt.name, func(t *testing.T) { db, err := Open(tt.file) require.NoError(t, err) @@ -121,6 +123,24 @@ func TestPackageList(t *testing.T) { } } +func BenchmarkRpmDB_Package(b *testing.B) { + for _, tt := range packageTests { + b.Run(tt.name, func(b *testing.B) { + for i := 0; i < b.N; i++ { + db, err := Open(tt.file) + if err != nil { + b.Fatal(err) + } + _, err = db.ListPackages() + if err != nil { + b.Fatal(err) + } + } + b.ReportAllocs() + }) + } +} + func TestRpmDB_Package(t *testing.T) { tests := []struct { name string