JavaScript Enumeration对象 - 使用字符串或数字更快?

时间:2013-08-23 18:59:02

标签: javascript string performance numbers enumeration

在我正在处理的项目中,我们有一个带有'枚举'对象的脚本,如下:

var MyEnumeration = {
    top: "top",
    right: "right",
    bottom: "bottom",
    left: "left"
};

当我们必须使用可以使用其中一个文字值的东西时,我们只需要对MyEnumeration.left进行比较,或者不管情况如何。

但是:至少在C#中,字符串值的评估速度通常比数字慢,因为字符串必须进行逐字符比较,以确保字符串A与字符串B匹配。

这将我带到问题:使用数字值实施MyEnumeration会更快地执行吗?

var MyEnumeration = {
    top: 0,
    right: 1,
    bottom: 2,
    left: 3
};

2 个答案:

答案 0 :(得分:1)

比较字符串时,JavaScript会从左到右逐个比较每个字符。但是在比较两个数字时,它只是一个比较。显然你可以猜出哪一个更快 - 数值比较。

然而,这种优化可能为时过早。除非你真的需要提高效率(比较频繁地比较数百个这样的值,或许?),不要过多考虑它们。

答案 1 :(得分:1)

它因Javascript引擎而异,因为这个jsperf让我感到惊讶:

http://jsperf.com/string-compare-vs-number-compare/2

在FF和Chrome中运行,结果是关于字符串或数字比较是否更快的结果。

你的问题的答案取决于它。如果您要定位单个浏览器,那么您可以编写可以利用其特定优化进行比较的代码。