HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

分析 JavaScript 的性能

  • 2007-09-03
  • 本文字数:845 字

    阅读完需:约 3 分钟

Kirk Pepperdine 在一篇新文章中详细讨论了关于JavaScript 性能的主题。他的第一个发现是JavaScript 引擎规范要比JVM 的脆弱的多。有太多的JavaScript 实现,各自具有不同的执行环境。除了这一点外,他还深入了下列主题:

Getters/Setters

……我所遭遇的最具争议的一项建议,在 Java 世界里已经很久没人提起过了。这项建议是,应该避免使用 getter 和 setter,而应当采用直接访问来避免方法调用的额外开销。这项建议错在哪里?更重要的是,它对在哪里?在 Java 中使用 getter 和 setter 是被普遍认可的……

Ajaxian 和 JQuery 的创建者 John Resig 曾经讨论过 getter 和 setter。就像这个网站所演示的,是出于性能上的考虑。

由于缓存造成的糟糕的局部基准评测(Micro-benchmark

……由于 JavaScript 引擎中少得多的动态优化,有人会觉得局部基准评测要比在 Java 中容易得多。虽然问题是不同的,但是 JavaScript 的局部基准评测也没那么容易。糟糕的局部基准评测的最普遍的原因是缓存。在 Web 世界中缓存无处不在,伴随始终。而且通常它隐藏的很深……

内存泄露

……最有趣的发现是关于内存泄露和内存调优的优秀 blog 很少……我的最大问题是,如何在浏览器中得到来自 JavaScript 的内存泄露呢。我发现有几种好办法。第一个是在 DOM 中保留大量的隐藏元素……另一种更有趣和更可憎的内存泄露来自于闭包……

CPU 负载

……最后,几篇讨论客户机性能的 blog 指出一个存在的问题,但似乎遇到这个问题的 JavaScript 应用程序并不太多。这个问题就是过度使用 JavaScript 会耗尽 CPU……如果你试图让 JavaScript 做太多事情,它就会约束客户机的 CPU 效率(在那种情况下,性能削减的厉害)……

Pepperdine 在结束时提到 Yahoo 的基于 Firebug 的新性能工具 YSlow ,它能够检查大量预先定义好的常见 JavaScript 性能问题。另外一个最近发布的性能工具是 JsLex ,它可以比较 JavaScript 的执行性能,类似于 jProfile。微软研究院也在开发一种调优代理技术,叫做 Ajax View

查看英文原文: Analyzing JavaScript in Respect to Performance

2007-09-03 17:561888
用户头像

发布了 127 篇内容, 共 43.3 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

kubernetes fifo源码解析

欢乐的阿苏

golang DevOps 后端 源码阅读 #Kubernetes#

成都.NET线下技术沙龙倒计时一天

MASA技术团队

.net 开发者 MASA Stack

openEuler、龙蜥Anolis、统信UOS系统下编译GreatSQL二进制包

GreatSQL

专注写作:Ulysses for Mac中文版

真大的脸盆

Mac markdown编辑器 Mac 软件 文本编辑 文本管理工具

Unity 之 转微信小游戏本地数据存储

陈言必行

Unity 三周年连更

C生万物 | 反汇编深挖【函数栈帧】的创建和销毁

Fire_Shield

C语言 汇编 三周年连更 函数栈帧

AI日课@20230412:Prompt Engineering

无人之路

ChatGPT

vivo全球商城:电商交易平台设计

vivo互联网技术

分布式事务 订单管理 架构设计 多租户 交易平台

【坚果派-坚果】获取OpenHarmony 3.2 Release源码的两种方式

坚果

HarmonyOS OpenHarmony OpenHarmony3.2 三周年连更

一定是疯了!在M1的Mac上玩OpenVINO,让Intel怎么看我?

IT蜗壳-Tango

OpenVINO Stable Diffusion 三周年连更

Go语言开发小技巧&易错点100例(三)

闫同学

Go 三周年连更

如何使用 taosKeeper 做好监控工作,时序数据库 TDengine 3.0 监控工具详解

TDengine

大数据 tdengine 物联网 时序数据库 数据监控

RabbitMQ组件介绍

穿过生命散发芬芳

RabbitMQ 三周年连更

Golang并发编程实战:使用ring buffer实现高效的阻塞队列

Jack

数据库原理及MySQL应用 | 约束

TiAmo

数据库 MySQL数据库 三周年连更 数据库约束

Java程序控制结构

timerring

Java

跨平台应用开发进阶(四十三)一文走近网络层抓包工具:WhireShark

No Silver Bullet

网络层 抓包工具 三周年连更

Java数组、排序和查找

timerring

Java

危中蕴机:Oi! Network展现出的勇气和决心

股市老人

论程序员的为码之“道”

酱紫的小白兔

kubernetes indexer源码解析

欢乐的阿苏

golang DevOps cache 源码阅读 #Kubernetes#

不要过于吹捧ChatGPT:人工智能生成文字还有很大提升空间

石头IT视角

程序员如何保住自己的饭碗?| 社区征文

liuzhen007

程序员 三周年征文

ContentProvider介绍

梦笔生花

ContextClassLoader 三周年连更

一文掌握 Go 文件的读取操作

陈明勇

Go golang 文件读取 三周年连更

影驰 GeForce RTX 4070显卡正式开售!星曜 OC系列首发评测抢先看

Geek_2d6073

kubernetes delta_fifo源码解析

欢乐的阿苏

golang DevOps 后端 源码阅读 #Kubernetes#

从ReentrantLock角度解析AQS

Java AQS 并发

【Linux】之【磁盘】相关的命令及解析[df、du、iostat、iotop]

A-刘晨阳

Linux 三周年连更 磁盘空间

Unity 之 使用原生UGUI实现随手移动摇杆功能经典实例

陈言必行

Unity 三周年连更

Spider实战-抓取视频

浅辄

三周年连更

分析JavaScript的性能_Java_Scott Delap_InfoQ精选文章