在这种情况下,没有一个正确的答案或预期的结果,我可以检查,我想评估一个功能在不同条件下的执行时间,还是单元测试吗?
我正在处理的项目中嵌入了一个函数,它在虚拟机(以太坊虚拟机)上执行添加操作(opAdd),可以找到该文件on the project GitHub page。
这是负责任务的具体功能:
func opAdd(pc *uint64, evm *EVM, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
x, y := stack.pop(), stack.pop()
stack.push(math.U256(x.Add(x, y)))
evm.interpreter.intPool.put(y)
return nil, nil
}
我想要做的是创建一个“ unit-test ”来评估此操作的执行速度。为了评估这一点,我相应地修改了函数:
func opAdd(pc *uint64, evm *EVM, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
// begin execution time tracking
var startTime = time.Now().UnixNano();
x, y := stack.pop(), stack.pop()
stack.push(math.U256(x.Add(x, y)))
evm.interpreter.intPool.put(y)
// log ellapsed execution time
fmt.Println("execute opAdd consume = ",(time.Now().UnixNano() - startTime))
return nil, nil
}
然而,缺少的是能够单独调用此函数,并为其提供不同数量的数据,以便我可以在不同条件下评估此代码的行为。
例如,我想看看用千兆字节,兆字节等执行需要多长时间。
有一些代码可以检查vm here的功能,但这对我来说太复杂了 - 我是golang的新手。
我想做的是编写可以调用此函数的最简单程序,将要处理的不同数量的输入数据作为参数。为此,我已经研究过multiple resources,但如果有经验的地鼠可以指出我正确的方向,那么推进我对如何构建实际单元测试的理解将是无法估量的。