Cappuccinos objc_msgSend()与普通JavaScript调用的速度比较可用吗?

时间:2010-11-11 16:41:17

标签: javascript performance cappuccino objective-j

如您所知,Cappuccino实现了Objective-C / Smalltalk的调度机制,以便在一个名为objj_msgSend的特殊方法中向对象发送消息(〜调用它们的方法)。

[someObject someMethodToInvocate: aParameter];

显然,这会引入一些开销,因此会造成速度损失。我想知道是否有人可以在此消息发送和在JavaScript中执行方法的正常方式之间进行速度比较......

someObject.someMethodToInvocate(aParameter);

3 个答案:

答案 0 :(得分:4)

在你的评论中,你说你在卡布奇诺应用的背景下“总体上”在想。在这种情况下,测试很简单:运行任何Cappuccino应用程序,例如GitHub Issues,并判断自己是否缓慢。尝试在主表中滚动,选择一些条目,依此类推。这将告诉你Cappuccino一般是快还是慢'因为objj_msgSend被广泛用于你可以在这样的应用程序中想到的任何用例。

如果你真的想到一些更具体的东西,请注意,没有关于卡布奇诺的任何内容会强迫你使用消息传递。就像在Objective-C中一样,你可以随时“下载到金属” - 在这种情况下是纯JavaScript - 当你需要做更多性能密集的事情时。如果你有一个紧凑的循环,并且你不需要objj_msgSend提供的附加功能,只需直接调用函数。 Objective-J不介意。

答案 1 :(得分:1)

objj_msgSend用于我对纯方法调用的简单测试,比直接调用慢2-2.5倍。

考虑到它可以实现的高级功能,这实际上非常好。

答案 2 :(得分:-2)

这已经晚了两年,但这是一个稍微无效的问题(绝不是说这是一个糟糕的问题)。毫无疑问,objj_msgSend的速度有问题,而不是在假设它是Smalltalk / Obj-C / Obj-J特定功能时。

Javascript总是有这种能力。

查询:call()和apply()方法...(快速谷歌搜索会显示这样的文章 - > http://vikasrao.wordpress.com/2011/06/09/javascripts-call-and-apply-methods/

与jQuery / Prototype / etc相同的问题......,它们都很好,花花公子和有用。但它们损害了开发社区,因为每个人都依赖这些框架而不是学习使任何语言有用的核心语言功能。

让自己和开发社区受宠,并学习您的语言,而不是框架。如果你知道你使用的语言,你使用的框架是无关紧要的,使用它们或只是自己构建它们,因为那时你应该能够。

希望这有助于而不是居高临下,这不是我的意图。 :)