1

在我正在处理的一个项目中,我们有一个脚本,其中包含一个“枚举”对象,如下所示:

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
};
4

2 回答 2

1

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

但是,这种优化可能为时过早。除非您真的需要提高效率(也许经常比较数百个这样的值?),否则不要过多考虑它们。

于 2013-08-23T19:24:02.983 回答
1

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

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

Running in both FF and Chrome, the results were all over the place as to whether string or number comparisons were faster.

The answer to your question is it depends. If you were to target a single browser, then you may be able to write code that would take advantage of its specific optimizations for comparisons.

于 2013-08-23T19:52:12.473 回答