查看此测试:
http://jsperf.com/delegate-on-vs-bind-5
我所做的是委托给定父母的孩子,并直接将另一个事件委托给孩子。测试(至少在Chrome中)似乎表明委派方法显着比直接绑定方法更快。这真的违背了我所读到的关于jQuery的一切,以及我认为它的意图。我的测试是错误的还是我们真的应该使用委托方法?请注意,父母甚至不 关闭孩子的祖先。
这个小提琴也证实了这个DOM和JS适当地触发了事件:
思想?
编辑:澄清一下,我的具体问题是为什么委托方法(传统上认为速度较慢)比 bind 方法快得多(假设速度更快) )在这个测试中?
答案 0 :(得分:1)
我确定会听到真正的答案,但你要求提出想法。
我的想法是,对于现代系统来说,几乎不可能一致地预测给定结构将如何影响性能。
你会得到这个的解释,经过一段时间的考虑并摆弄它你会相信它(或者它可能会被发现是一个测量错误),但从长远来看它赢了'为您提供有关如何更好地编码的真正见解。此外,在一周的不同浏览器/平台/版本/日中,它将以不同的方式工作。
问题是,如果有一个构造,他们希望你使用很多(因为这是人们通常编码的方式),他们会先优化它,它可能会更快地执行。这样做的结果是,在代码下面的级别上完成的性能改进通常会改善您编写良好的代码而非代码优化代码。
这意味着你永远不应该为性能,代码清晰和DRY,周期编码。如果你这样做并遇到障碍,某些客户或经理判断它太慢(获得性能要求!),那么考虑在每个平台上使用前后测量重新编码它。进行比较并确保“优化”解决方案实际上值得缺乏清晰度并实际满足要求。文档为什么你在代码中这样做,所以其他人不会出现并在以后修复看起来像你糟糕的编码风格。