微观优化,是不是被现代浏览器优化了
Micro optimization, is it optimized anyway by modern browsers?
我最近继承了一个库,在一个类上存在一个更新方法。下面是一个例子。
onPointerMove(pointer, x, y, isPressed){
var floor = Math.floor;
var cx = this.currentX;
var cy = this.currentY;
var tm = this.toolManager;
}
这种代码大多只存在于性能关键的东西上。项目的其余大部分内容都不是这样写的。
- 地板使用了两次。在本地变量中缓存它肯定只是在每次运行时强制分配一些"临时"内存吗?这怎么比简单地查找函数更快呢
- This.currentX在函数体中被多次引用,但缓存它真的更快了吗?我本以为
this.currentX
不涉及查找问题,但也许我错了。由于这种情况发生在示例中的其余代码上,因此所有这些属性都被缓存
这些在现代JavaScript引擎上真的重要吗?我认为这样的优化,如果它们更快的话。。。。将被视为V8内部优化的给定条件。例如,如果Math.round在一个函数中被调用了20次,那么引擎无论如何都会缓存它?
我还希望像在"for it"之前缓存一个长度这样的东西,也是我认为优化引擎在解释代码时无论如何都要做的另一个例子(同样,只有当它产生影响时)。
我真正想知道的是……从今天起,我应该做这些微优化(针对常青浏览器)并优化我的代码,还是从2010年开始(当我阅读Performance JavaScript时)
谢谢!
不要过早地进行优化。除非一些评测显示代码中的这些东西实际上会导致某种瓶颈,或过度的资源使用,否则不要按照性能理论来优化它们。
至于实际性能:对象属性查找(如Math.floor或this.currentX)是o(1)操作,因为它们实际上是散列映射查找。将它们保存到这样的变量中,看起来更像是一种可读性增强。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 重新审视网站优化的经验法则:JavaScript在现代浏览器中仍然是必不可少的
- 微观优化,是不是被现代浏览器优化了
- 优化浏览器侧图像大小
- 在浏览器中优化后需要 JS R.js 错误
- 浏览器供应商是否针对jQuery优化了他们的浏览器
- 浏览器是否优化了 js 代码
- 优化加载时间,同时支持禁用JavaScript的浏览器
- 可以通过JavaScript在浏览器中优化PNG吗?
- 优化iPhone浏览器的Javascript/jQuery代码
- 为(潜在的)未来浏览器汇编语言优化优化JavaScript的最佳实践是什么?
- 关于浏览器缓存,为优化速度加载网站
- 浏览器(等)是否在内部优化它们对javascript对象属性的检索?
- 浏览器如何优化我的JavaScript
- 有没有优化JS/CSS文件的浏览器插件?
- RequireJS:优化的文件和旧的浏览器
- 我应该相信现代浏览器会为我优化代码吗?
- 本地存储是否具有浏览器的某种内部“优化”