package usecase import "testing" // 基準測試 SetTrue 函數,測試在不同大小的 Bitmap 上設置位元為 true 的效能 func BenchmarkBitmapSetTrue(b *testing.B) { // 以 10^6 位元作為基準測試的 Bitmap 大小 bitmap := MakeBitmapWithBitSize(1000000) b.ResetTimer() // 重設計時器,排除初始化的時間 for i := 0; i < b.N; i++ { bitmap.SetTrue(uint32(i % 1000000)) // 設置位元為 true } } // 基準測試 SetFalse 函數,測試在不同大小的 Bitmap 上清除位元為 false 的效能 func BenchmarkBitmapSetFalse(b *testing.B) { // 以 10^6 位元作為基準測試的 Bitmap 大小 bitmap := MakeBitmapWithBitSize(1000000) b.ResetTimer() // 重設計時器,排除初始化的時間 for i := 0; i < b.N; i++ { bitmap.SetFalse(uint32(i % 1000000)) // 清除位元為 false } } // 基準測試 IsTrue 函數,測試在不同大小的 Bitmap 上檢查位元狀態的效能 func BenchmarkBitmapIsTrue(b *testing.B) { // 以 10^6 位元作為基準測試的 Bitmap 大小 bitmap := MakeBitmapWithBitSize(1000000) b.ResetTimer() // 重設計時器,排除初始化的時間 for i := 0; i < b.N; i++ { _ = bitmap.IsTrue(uint32(i % 1000000)) // 檢查位元是否為 true } } // 基準測試 Reset 函數,測試重置不同大小的 Bitmap 的效能 func BenchmarkBitmapReset(b *testing.B) { // 以 10^6 位元作為基準測試的 Bitmap 大小 bitmap := MakeBitmapWithBitSize(1000000) b.ResetTimer() // 重設計時器,排除初始化的時間 for i := 0; i < b.N; i++ { bitmap.Reset() // 重置 Bitmap } } // 基準測試 BitSize 函數,測試返回位圖的 bit 長度的效能 func BenchmarkBitmapBitSize(b *testing.B) { // 以 10^6 位元作為基準測試的 Bitmap 大小 bitmap := MakeBitmapWithBitSize(1000000) b.ResetTimer() // 重設計時器,排除初始化的時間 for i := 0; i < b.N; i++ { _ = bitmap.BitSize() // 測試返回位圖的 bit 長度 } } // 基準測試 ByteSize 函數,測試返回位圖的 byte 長度的效能 func BenchmarkBitmapByteSize(b *testing.B) { // 以 10^6 位元作為基準測試的 Bitmap 大小 bitmap := MakeBitmapWithBitSize(1000000) b.ResetTimer() // 重設計時器,排除初始化的時間 for i := 0; i < b.N; i++ { _ = bitmap.ByteSize() // 測試返回位圖的 byte 長度 } }