字符串的内存优化(游览器内置)

代码1 :
    var array = [];        
        for (var i = 0 ; i < 100000; i++) {        
            array.push({ name: "keatkeata" });
        }
代码2 :
 var array = [];        
        for (var i = 0 ; i < 100000; i++) {        
            var obj = new Object();
            var str = new String("keatkeata");
            obj.name = str;
            array.push(obj);
            obj = null;
        }

代码1和代码2出来的结果是一样的。
但是代码1用的内存是 6.xM 而代码2用了 10M
为什么呢?
其实这和C#原理差不多。
str 也是对象也可以用指针表示
所以呢 代码1其实是new String("keatkeat") 了一次而已,之后的都引用同一个对象
而代码2这是 new String 了很多次,所以内存就消耗很多了!
JSON.parse 就是用了第2种方法,所以你会发现本来没消耗那么多的,结果JSON.parse 后变多了! 
当然如果你的字符串都是不同的,游览器也就没法优化了,要注意了哦!

字符串的内存优化(游览器内置)

时间: 2024-11-07 17:14:49

字符串的内存优化(游览器内置)的相关文章

装饰器 内置函数

1.装饰器 它在不改变原有的函数的代码和调用方式,给他添加新功能. 1.函数即变量 2.def func(func1): func1() 3.函数里面也可以嵌套函数 装饰器本身就是一个函数 高阶函数+函数嵌套 = 装饰器 2.内置函数 i = int('345')#转换int类型 fl = float('2.1')#转换float类型 dic =dict(k=1,v=2)#转换成字典 lis = list('1,2,3')#转换成list new_set = set(lis) def say()

python登录加随机验证码校验程序(装饰器内置函数的理解)

使用说明:为了防止恶意攻击,同时不对原先用户登录验证的方法代码进行改动,在检验账号密码方法外再套一层校验方法(验证码),过滤非人为的攻击. 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- import os import json import random ###取得绝对路径下的账号密码文件 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) filepa

python基础--定义装饰器(内置装饰器)

装饰器的定义: 装饰器本质上就是一个python函数,它可以让其它函数在不需要做任何代码改动的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景中,比如-- >插入日志.性能测试.事务处理.缓存.权限校验等场景.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同的代码并且可以重复使用. 装饰器的作用: 就是为已经存在的函数或者对象添加额外的功能 装饰器的写法: (无参装饰器) def wrapper(func): def inn

014:字符串:各种其奇葩的内置方法

笔记 1.字符串也不可修改!!改变后标签也改变了 2.字符串的方法及注释 capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中,并使用空格填充至长度width的新字符串 count(sub[,start[,end]])返回sub在字符串里边出现的次数,start和end参数表示范围,可选. encode(encoding='utf-8',errors='strict')以encoding指定的编码格

第二模块&#183;函数编程-第1章 函数、装饰器、迭代器、内置方法

01-鸡汤之人丑就要多读书 02-三元运算 03-文件处理 04-文件处理-二进制模式 05-文件处理-智能检测编码的工具 06-文件处理-写模式操作文件 07-文件处理-追加模式操作文件 08-文件处理-混合操作文件 09-文件操作其他功能 10-文件处理-文件修改功能 11-函数-基本介绍 12-函数-默认参数 13-函数-关键参数 14-函数-非固定参数 15-函数-非固定参数2 16-函数-返回值 17-函数-局部变量 18-函数-在函数里修改全局变量 19-函数-在函数里修改列表数据

函数篇 ---&gt; 装饰器与内置函数

装饰器: 从名字上来看,装饰器就是用来装饰内容的一个工具.本质上是一个闭包 在开发中,装饰器必须要遵守开放封闭原则:对扩展开放,对修改源代码封闭. 在装饰器中,有一个很重要的工具就是@,称之为语法糖,语法糖的本质就是:被装饰的函数名 = 装饰器的名字(被装饰的函数名) 在装饰器的应用上,有一个很简单的例子 计算简易的函数运行时间 import time # 导入time模块 print(time.time()) # 获取时间戳 start_time = time.time() # 开始时间 de

第014讲:字符串:各种奇葩的内置方法( 课后测试题及答案 )

一.字符串的秘密 二.各种内置方法 三.课时14课后习题及答案 一.字符串的秘密 学习了列表和元组,我们知道了分片的概念,事实上也可以应用于字符串上: >>> str1 = "I love fishc" >>> str1[:6] 'I love' 在python中没有字符这个类型,在Python看来,所谓字符,就是长度为1的字符串.当要访问字符串的其中一个字符的时候,只需要索引列表或元组的方法来索引字符串即可: >>> str1[5

不使用java内置函数,将String字符串转换为int类型

package com.test; public class AtoiTest { public static void main(String[] args) throws Exception { String s = "-011134"; System.out.println("转换前的字符串:" + s); System.out.println("atoi1转换后的字符串:" + atoi1(s)); System.out.println(

python学习之路-4 内置函数和装饰器

本篇涉及内容 内置函数 装饰器 内置函数 callable()   判断对象是否可以被调用,返回一个布尔值 1 2 3 4 5 6 7 8 9 10 11 num = 10 print(callable(num))   # num不能够被调用,返回False    def f1():     print("name")    print(callable(f1))     # f1可以被调用,返回True    # 输出 False True ?chr()   将十进制整数转换为asc