From ff2c4940e92c17ddc138df202a3dd731c00bfddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Tue, 12 Jan 2021 22:04:12 +0100 Subject: optimize pop_twice Fibonacci runtime 0.27 -> 0.19 --- src/vm.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/vm.rs') diff --git a/src/vm.rs b/src/vm.rs index 68ab3b8..bc3b1e8 100644 --- a/src/vm.rs +++ b/src/vm.rs @@ -128,8 +128,10 @@ pub fn run_block(block: Block) -> Result<(), Error> { impl VM { fn pop_twice(&mut self) -> (Value, Value) { - let (a, b) = (self.stack.pop().unwrap(), self.stack.pop().unwrap()); - (b, a) + let len = self.stack.len(); + let res = (self.stack[len-2].clone(), self.stack[len-1].clone()); + self.stack.truncate(len - 2); + res } fn _peek_up(&self, amount: usize) -> Option<&Value> { -- cgit v1.2.1