哪一个在速度和内存使用方面更好,或者只是最佳实践

时间:2015-11-05 18:33:07

标签: javascript

我有一个函数,里面有很多常量变量。将这些变量存储在Hash-map中会更好(这将是一个复杂的变量)(它会在Hash-map中包含哈希映射。或者若是if,否则是if子句。就可读性而言,它们是关于但我担心的是内存占用和应用程序的速度。这是一个非常简化的问题版本:

function myFunction(data) {
    var a = 0, b = 0, c = 0, d = 0;
    if(data == value1) {
        a += 3;
        if(value1Fetched) {
           b += 6;
           c +=2;
           d +=1;
        }
    } else if (data == value2) {
        a += 1;
        if(value2Fetched) {
           b += 4;
           c +=9;
        }
    }
return a+b+c+d;
}

显然有更多的标志和值(而Data也是Hash-map)

版本2:

function myFunction(data) {
    var a = 0, b = 0, c = 0, d = 0;
    var myHash = {
        value1: {
            a: 3,
            b: 6,
            c: 2,
            d: 1            
        },
        value2: {
            a: 1,
            b: 4,
            c: 9,
            d: 0  
        }
    };
    a += myHash[data][a];
    if(isFetched(data)){
        b += myHash[data][b];
        c += myHash[data][c];
        d += myHash[data][d];
    }
return a+b+c+d;
}

对于凌乱的(伪)代码感到抱歉,我试图让它尽可能可读。 这几天困扰着我,工作中的每个人都有不同的看法。

1 个答案:

答案 0 :(得分:1)

我想说第二个问题的可扩展性远远超过任何可能(并且不太可能)的性能问题。如果需要,您甚至可以动态更改该结构,或者对于映射结果不同的两个环境具有多个实例。

对于与您发布的示例一样小的示例,它可能会更慢,但听起来实际上可能有很多条目,在这种情况下使用地图查找具有O(log(n))复杂度而不是O( n)(希望我的条款正确!从大学开始已经有一段时间了)。大型JSON对象(字符串映射)在JavaScript中并不罕见,事实上,您经常使用它们来处理常用代码中的库和浏览器功能。