高性能Js—数据存取
数据存取
JavaScript中四中基本的数据存取位置
- 字面量:不存于某个变量内
- 本地变量:var定义的
- 数组元素
- 对象成员
字面量、全局变量读取速度 > 数组项、对象成员 。因为局部变量存在于作用域链的起始位置
作用域
- 作用域链
函数创建——作用域中的scope属性(内部属性对象)——集合——作用域链(即函数创建后,内部的可访问数据对象在访问时填充而成) - 标识符解析
对变量在作用域中的搜索过程。在执行环境的作用域链中,一个标识符所在的位置越深,读取速度越慢。全局变量总存在于作用域链的某端。 - 少用动态作用域
with、try catch等,会导致js引擎的自身优化性能失效。 - 闭包:可以访问另一个函数中数据的函数。
可能导致性能问题:需要更多的内存开销,因为函数在调用时,会创建一个scope属性对象的活动对象,而这个对象包含了执行环境中活动对象的所有属性和方法,相当于是执行环境中活动对象的一个副本,所以在执行环境执行完后他不会被销毁,造成内存消耗,内存泄漏
解决:将常用的跨作用域的变量存储在局部变量中,直接访问 局部变量,这减轻了闭包的影响。
原型
- 概念:原型是其他对象的基础,定义了实现新创建的对象所必须包含的成员列表。
- 对象成员类型:
实例成员
原型成员:自动拥有 <——原型对象 - 原型链:创建一个对象,在使用该对象某些属性时,需要遍历他的原型对象的属性,或是他父级的一些属性或方时,形成一个链条。用来实现JS中的继承。
- 嵌套成员变量尽量少用。(嵌套越深,读取速度越慢)
原型链越深,读取速度越慢,越大;
解决:缓存对象成员值——> 保存到局部变量。
高性能Js—数据存取的更多相关文章
- 高性能JS笔记2——数据存取
数据存取性能而言: 字面量>本地变量>数组元素>对象成员 一.标识符解析的性能 标识符解析是有代价的,一个标识符的位置越深,它的读写速度也就越慢. 局部变量的读写速度是最快的,全局变 ...
- 高性能JavaScript(数据存取)
数据存取分为4各部分 存取位置 作用域及改变作用域 原型以及原型链 缓存对象成员值 存取位置 JavaScript 有4中基本的数据存取位置 字面量:字面量代表自身,不存于特定的位置.比如这个的匿名函 ...
- 《高性能js》读书笔记
第一章:加载和执行 .浏览器的JavaScript的引擎是编译器层的优化: .当浏览器执行JavaScript代码时,不能同时做其他任何事情(单一进程),意味着 .主流浏览器都允许并行下载JS. .减 ...
- JavaScript数据存取的性能问题
JavaScript中四种基本的数据存取位置: 字面量:只代表自身 字符串.数字.布尔值.对象.函数.数组.正则,以及null和undefined 快 本地变量:var定义的 快 数组元素 ...
- JS 数据类型转换
JS 数据类型转换 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把 ...
- Hyperledger中数据存取的实现
简介 本文介绍了在Hyperledger中数据存取的实现. API接口 Hyperledger提供基于key/value的数据存储,其中key是字符串,value则是二进制字节数组,Hyperledg ...
- HBase 高性能获取数据(多线程批量式解决办法) + MySQL和HBase性能测试比较
摘要: 在前篇博客里已经讲述了通过一个自定义 HBase Filter来获取数据的办法,在末尾指出此办法的性能是不能满足应用要求的,很显然对于如此成熟的HBase来说,高性能获取数据应该不是问题. ...
- 一个自定义 HBase Filter -“通过RowKeys来高性能获取数据”
摘要: 大家在使用HBase和Solr搭建系统中经常遇到的一个问题就是:“我通过SOLR得到了RowKeys后,该怎样去HBase上取数据”.使用现有的Filter性能差劲,网上也没有现成的自定义Fi ...
- HBase 高性能加入数据 - 按批多“粮仓”式解决办法
摘要:如何从HBase中的海量数据中,以很快的速度的获取大批量数据,这一议题已经在<HBase 高性能获取数据>(http://www.cnblogs.com/wgp13x/p/42451 ...
随机推荐
- 扩展运算符和rest运算符
扩展运算符 扩展运算符用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值 一.拆分数组 扩展运算符可以直接把数组拆分成用逗号隔开的值 <template> <sect ...
- centos7安装nodejs 和 yarn
如何从EPEL库安装Node.js 另一个有效且简单的方法来安装Node.js就是从官方库.这同样确保您可以访问到EPEL库,你可以通过运行以下命令. sudo yum install epel-re ...
- SAP内存、ABAP内存、共享内存的 区别
区别: (1)SAP内存使用 SET/GET parameters 方法: SET PARAMETER ID ‘MAT’ field P_MATNR. GET PARAMETER ID ‘ ...
- 爬虫四 selenium模块详细参数
selenium元素定位方法 一.访问页面并获取网页html from selenium import webdriver browser = webdriver.Chrome() browser.g ...
- 【算法题 14 LeetCode 147 链表的插入排序】
算法题 14 LeetCode 147 链表的插入排序: 解题代码: # Definition for singly-linked list. # class ListNode(object): # ...
- [转]linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
原文链接:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html linux shell有一套自己的流程控制语句,其中包括条件语句 ...
- Python之异常处理(Day27)
一.错误和异常 part1: 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def test: pass #语法错 ...
- sql server分区
1. 创建分区 分区步骤:1.创建分区函数 2.创建分区架构 3.创建分区索引(聚集) --1. 创建分区函数 DECLARE @dt datetime SET @dt = '20030901' ...
- Harbor私有仓库搭建
1.安装docker yum install -y dockersystemctl start dockersystemctl enable docker 2.安装docker-compose 1.下 ...
- 字典树 trie树 学习
一字典树 字典树,又称单词查找树,Trie树,是一种树形结构,哈希表的一个变种 二.性质 根节点不包含字符,除根节点以外的每一个节点都只包含一个字符: 从根节点到某一节点,路径上经过的字符串连接起 ...