gpt4 book ai didi

smalltalk - 执行: in Smalltalk (specifically Squeak)的性能开销

转载 作者:行者123 更新时间:2023-12-04 13:56:00 26 4
gpt4 key购买 nike

平均而言,我可以合理地预期perform:比文字消息发送慢多少?我是否应该避免在循环中发送perform:,这类似于为避免在循环中调用eval("...")(Smalltalk中的Compiler evaluate:)而向Perl/Python程序员发出的警告?

我主要关注Squeak,但也对其他Smalltalks感兴趣。此外,perform:with:变体的开销会更大吗?谢谢

最佳答案

#perform:eval()不同。 eval()的问题(无论如何是性能方面的问题)在于,它必须在运行时编译要发送的代码,这是一个非常慢的操作。另一方面,Smalltalk的#perform:与Ruby的send()或Objective-C的performSelector:等效(实际上,这两种语言均受Smalltalk的强烈启发)。诸如此类的语言已经根据其名称查找方法了-#perform:仅允许您在运行时而不是写时指定名称。它不必解析任何语法或编译诸如eval()之类的任何内容。

它将稍微慢一些(至少需要一个额外的方法调用的开销),但是它并不像eval()。另外,带有更多参数的变体与普通perform:whatever相比,在速度上不应表现出任何差异。我不能谈论太多有关Squeak的经验,但这是它通常的工作方式。

关于smalltalk - 执行: in Smalltalk (specifically Squeak)的性能开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com