Go 如何测试切片或贴图是否变得过大?

Go 如何测试切片或贴图是否变得过大?,go,Go,我正在寻找一种测试代码块是否不会一次分配太多内存的方法 例如,假设我们有两个处理器: func-goodProcessor(数据集[][]字节,句柄func(记录)){ 对于Ubs:=范围数据集{ 记录:=&记录{} json.Unmarshal(bs和record) 处理(记录) } } func-badProcessor(数据集[][]字节,句柄func(记录)){ 记录:=[]记录{} 对于Ubs:=范围数据集{ 记录:=&记录{} json.Unmarshal(bs和record) 记录

我正在寻找一种测试代码块是否不会一次分配太多内存的方法

例如,假设我们有两个处理器:

func-goodProcessor(数据集[][]字节,句柄func(记录)){
对于Ubs:=范围数据集{
记录:=&记录{}
json.Unmarshal(bs和record)
处理(记录)
}
}
func-badProcessor(数据集[][]字节,句柄func(记录)){
记录:=[]记录{}
对于Ubs:=范围数据集{
记录:=&记录{}
json.Unmarshal(bs和record)
记录=追加(记录,记录)
}
对于u,记录:=范围记录{
处理(记录)
}
}
两者在功能上是相同的,分析器会告诉您它们使用相同的总体内存。然而,坏处理器的风险更大,因为它在处理之前会创建一个巨大的切片。是否有一个单元测试或基准我可以写失败的处理器

下面是我编写的一个测试,以演示它们相似的内存占用。我希望坏处理器会占用更多内存:

func TestMemPeak(t*testing.t){
数据集:=generateDataset()//生成1000条记录
处理程序:=func(r记录){
_=r//写入输出或其他内容
}
好:=func(b*testing.b){
goodProcessor(数据集、处理程序)
}
坏:=func(b*testing.b){
badProcessor(数据集、处理程序)
}
goodResult:=测试基准(良好)
badResult:=测试基准(坏)
fmt.Printf(“良好内存:%v\n”,goodResult.MemBytes)//9000808
fmt.Printf(“好的allocs:%v\n”,goodResult.MemAllocs)//260337
fmt.Printf(“坏内存:%v\n”,badResult.MemBytes)//9027032
fmt.Printf(“错误的allocs:%v\n”,badResult.MemAllocs)//260382
}