zoukankan      html  css  js  c++  java
  • java和javascript真的有关系=。=

    相同点:
    1. 内存管理,两者都采用GC来对内存进行回收。因此Java与javascript的内存泄露情况十分相似。

    2. 代码编译为机器码后由中间件执行:Java使用前会编译为字节码后由JVM执行,V8引擎采用JIT将js编译为机器码后由引擎执行。

    3. 内存申请,对象(Object)与数组(Array)引用申请自栈(stack),其本身空间申请自堆(heap)。

    4. hash处理,对数组与对象来说,数字类型键值的hashCode为其本身,字符串类型键需要计算hashCode来找到对应的值,因此属性名字的长度决定了其类型在hash类容器中的性能,Java中也有这样的问题。

    arr = [], obj = {}, num = 1000000;
    function arrTest() {
    	for(var i=0;i<num;i++) {
    		arr[100] = i;
    	}
    }
    function objTest() {
    	for(var i=0;i<num;i++) {
    		obj[100] = i;
    	}
    }
    function objTest2() {
    	for(var i=0;i<num;i++) {
    		obj["def"] = i;
    	}
    }
    function objTest3() {
    	for(var i=0;i<num;i++) {
    		obj["apqerasmfkvcxcjvirjqwesdaf/j;klsADf"] = i;
    	}
    }
    function objTest4() {
    	for(var i=0;i<num;i++) {
    		obj["1"] = i;
    	}
    }
    function objTest5() {
    	for(var i=0;i<num;i++) {
    		obj[1000000000000000000] = i;
    	}
    }
    
    console.time("arr"); arrTest(); console.timeEnd("arr");
    console.time("obj"); objTest(); console.timeEnd("obj");
    console.time("obj2"); objTest2(); console.timeEnd("obj2");
    console.time("obj3"); objTest3(); console.timeEnd("obj3");
    console.time("obj4"); objTest4(); console.timeEnd("obj4");
    console.time("obj5"); objTest5(); console.timeEnd("obj5");
    


    结果(Chrome V33.0):
    实验3由于字符串长度略慢于前几项,实验4将字符串“1”理解为数字而进行了格式转换,实验5由于数字1000000000000000000超过了对象容纳长度将其理解为字符串也进行了格式转换。

  • 相关阅读:
    BZOJ2002 [HNOI2010] 弹飞绵羊
    BZOJ1030 [JSOI2007] 文本生成器
    BZOJ3233 [AHOI2013] 找硬币
    BZOJ4269 再见xor
    BZOJ5297 CQOI2018 社交网络
    LOJ149 0/1分数规划
    BZOJ2132 圈地计划
    UOJ131 [NOI2015] 品酒大会
    composer速度慢(composer更换国内镜像)
    thinkphp6安装报错,composer install tp6 报错 Parse error: syntax error
  • 原文地址:https://www.cnblogs.com/sussski/p/3815337.html
Copyright © 2011-2022 走看看