在Javascript中调度大量额外事件的效率如何?
我正在构建一个库,它扩展了标准JS输入事件 这意味着在ARM设备的浏览器中,以输入采样率(60Hz)触发大量多点触碰事件 我已经看过了,它在我的1.7Ghz Sandy Bridge i5上产生了大约250000次每秒的操作,我将很快在那里测试我的iPhone5和Nexus7 我的问题是,是否会快速处理未侦听的事件在Javascript中调度大量额外事件的效率如何?,javascript,html,events,touch,dom-events,Javascript,Html,Events,Touch,Dom Events,我正在构建一个库,它扩展了标准JS输入事件 这意味着在ARM设备的浏览器中,以输入采样率(60Hz)触发大量多点触碰事件 我已经看过了,它在我的1.7Ghz Sandy Bridge i5上产生了大约250000次每秒的操作,我将很快在那里测试我的iPhone5和Nexus7 我的问题是,是否会快速处理未侦听的事件 如果我知道事件没有被监听,是否有一种方法可以跳过生成事件的过程?我认为jsperf在调度和处理事件时会弄脏事情,因为每次测试循环迭代都会添加和删除事件侦听器。听起来您的用例调度和处理
如果我知道事件没有被监听,是否有一种方法可以跳过生成事件的过程?我认为jsperf在调度和处理事件时会弄脏事情,因为每次测试循环迭代都会添加和删除事件侦听器。听起来您的用例调度和处理事件的频率很高,但添加和删除事件处理程序的要求相对较低 我把重点放在用自定义事件包装本机事件上,然后取消自定义事件。测试场景基于:
- 是否存在自定义事件的侦听器
- 与自定义事件关联的数据的即时初始化与延迟初始化
- 处理“轻”与“重”初始化需求时上述因素的影响
- 当侦听器存在时,lazyly init'd事件通常会稍微慢一点。对于“光”数据,它有时低至立即初始化事件速度的0.8倍
- 如果没有侦听器,对于“轻”和“重”数据,延迟初始化的数据通常更快。对于“重”数据,通常要快2-10倍
- 将是否正在侦听事件的知识公开给生成和分派事件的进程,然后让该进程在不知道正在侦听任何内容的情况下跳过创建事件
- 听起来生成自定义事件的代码会在某个时刻侦听本机事件,然后基于本机事件创建自定义事件。在这种情况下,您可以忽略本机事件,直到添加了自定义事件的事件侦听器,然后在删除了自定义事件的所有侦听器后再次忽略本机事件