1

看看这个测试:

http://jsperf.com/delegate-on-vs-bind-5

我所做的是将孩子委托给给定的父母,并将另一个事件直接委托给孩子。测试(至少在 Chrome 中)似乎表明委托方法直接绑定方法快得多。这确实违背了我所读到的关于 jQuery 的所有内容以及我认为它的意图。我的测试是错误的还是我们真的应该使用委托方法?请注意,父母与孩子的祖先甚至不是那么接近。

这个小提琴也证实了事件是用这个 DOM 和 JS 适当地触发的:

http://jsfiddle.net/WtnRF/

想法?

编辑:为了澄清,我的具体问题是为什么在这个测试中,委托方法(传统上应该更慢)比绑定方法(应该更快)快得多?

  • 我只是写了一个糟糕的测试吗?
  • jsperf 基准测试搞砸了吗?
  • 我们真的应该一直使用委托方法,因为它优越吗?
4

1 回答 1

1

我敢肯定,真正的答案会随之而来,但你问的是想法。

我的想法是,对于现代系统,几乎不可能始终如一地预测给定结构将如何影响性能。

你会得到这个的解释,想了一会儿,摆弄它你会相信它(或者它可能会被发现是一个测量错误),但从长远来看它不会给你任何关于如何更好地编码的真正见解。此外,在不同的浏览器/平台/版本/星期几上,它的工作方式也会不同。

问题是,如果有一个他们希望你经常使用的构造(因为这是人们通常编码的方式),他们会首先对其进行优化,并且它可能会执行得更快。这样做的结果是,在代码下面的级别上进行的性能改进通常会比手动优化的代码改进您编写良好的代码。

这意味着您永远不应该为性能而编码,为清晰和干燥而编码。如果您这样做并且遇到了一些客户或经理认为它太慢的障碍(获取性能要求!),那么当然可以考虑在每个平台上使用前后测量重新编码。进行比较并确保“优化”解决方案实际上值得缺乏清晰度并且实际上满足要求。记录您在代码中这样做的原因,这样其他人就不会出现并在以后修复看起来像您蹩脚的编码风格。

于 2012-05-16T23:10:07.590 回答