It is not about "efficiency" - it's all about whether or not original value needs to be preserved. If so you'd use ByVal - that's all.