70 lines
2.3 KiB
Go
70 lines
2.3 KiB
Go
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 長度
|
|
}
|
|
}
|