Javascript 符号与数字文字的性能?

Javascript 符号与数字文字的性能?,javascript,Javascript,我一直在使用对象文字作为穷人的枚举,类似这样: let enum = { option1: Symbol("o1"), option2: Symbol("o2"), option3: Symbol("o3") }; let item = enum.option2; if(item === enum.option2) { console.log("Item is Option 2!") } 我使用Symbol,因为我认为它比使用数字更有语义意义——在本例中,我并不真正

我一直在使用对象文字作为穷人的枚举,类似这样:

let enum = {
    option1: Symbol("o1"),
    option2: Symbol("o2"),
    option3: Symbol("o3")
};

let item = enum.option2;

if(item === enum.option2) { console.log("Item is Option 2!") }

我使用
Symbol
,因为我认为它比使用数字更有语义意义——在本例中,我并不真正关心“enum”携带哪个值,我只想检查相等性——但我稍微担心这样做的性能考虑。如果我继续用符号代替整数,会给处理器带来更大的压力吗

不,符号是与数字一样的基本值,应该以同样快的速度进行比较。唯一的缺点可能是您必须使用变量来引用它们,而不是可信的文本,但是如果您的变量是
const
并且从未赋值,那么优化编译器也应该能够内联符号值


在任何情况下,您都应该明确地使用语义上更有意义的内容,并帮助您提高开发性能。执行速度是次要的,这里的差异可以忽略不计。

不,符号和数字一样是原始值,应该以同样快的速度进行比较。唯一的缺点可能是您必须使用变量来引用它们,而不是可信的文本,但是如果您的变量是
const
并且从未赋值,那么优化编译器也应该能够内联符号值


在任何情况下,您都应该明确地使用语义上更有意义的内容,并帮助您提高开发性能。执行速度是次要的,这里的差异可以忽略不计。

您可以使用普通对象,但除非您极端使用成千上万个这样的值,否则这对性能没有任何影响。上下文与性能有关。在JSPerf上运行您自己的测试,并告诉我们您发现了什么处理器上最大的压力是您正在使用JavaScript。无论如何,它都会很慢,所以在您的项目环境中做最有意义的事情。
但我有点担心这样做的性能考虑。
这是一个典型的过早优化案例。这是个问题吗?可能不会,因为我怀疑您不会经常运行该代码。即使您是,JS解释器也可能会在运行中为您优化它。很难说这是否会影响性能,因为这似乎是一件微不足道的事情。它不像一个算法,你可以清楚地找到它的复杂性,并且知道你会调用它,比如说,30%的处理时间。你分析过你的应用程序来确定这是否是一个实际问题吗?这几乎不可能产生显著的负面影响,即使它稍微慢一点。您可以使用普通对象,但除非您极端使用数千个这样的值,否则这对性能没有任何影响。上下文与性能有关。在JSPerf上运行您自己的测试,并告诉我们您发现了什么处理器上最大的压力是您正在使用JavaScript。无论如何,它都会很慢,所以在您的项目环境中做最有意义的事情。
但我有点担心这样做的性能考虑。
这是一个典型的过早优化案例。这是个问题吗?可能不会,因为我怀疑您不会经常运行该代码。即使您是,JS解释器也可能会在运行中为您优化它。很难说这是否会影响性能,因为这似乎是一件微不足道的事情。它不像一个算法,你可以清楚地找到它的复杂性,并且知道你会调用它,比如说,30%的处理时间。你分析过你的应用程序来确定这是否是一个实际问题吗?这几乎完全不可能产生重大的负面影响,即使它稍微慢一点。