Skip to content

Conversation

@weikengchen
Copy link
Contributor

This engine is intended to improve the performance of script evaluation.

The main idea is to default the stack into a stack that represents signed 32-bit integers.

Some functions and interfaces need to be changed as well.

@weikengchen
Copy link
Contributor Author

I want to point out that there is a material change in the engine. Previously, the stat will consider the total number of bytes in the stack as well as the max length of a single stack element:

		let stack_size = self.stack.iter().chain(self.altstack.iter()).map(|i| i.len()).sum();
		self.stats.max_stack_bytes = cmp::max(self.stats.max_stack_bytes, stack_size);

		// NB since every item that ever gets on the altstack first gets on the stack,
		// we don't have to look at the altstack here
		let max_item = self.stack.iter().map(|i| i.len()).max().unwrap_or(0);
		self.stats.max_stack_item_size = cmp::max(self.stats.max_stack_item_size, max_item);

I think these two have caused slowdown and probably should be removed. Later, they may be substituted with a new method that does the stat when needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants