在JavaScript上进行枚举类型的最快方法是什么?

时间:2018-08-04 03:56:45

标签: javascript ecmascript-6 enums

用JavaScript(ES6)编写此代码最快的方法是什么? 另一个问题没有答案(Enums in Javascript with ES6)。 在c ++中,我将只使用将优化为int的枚举,因此它基本上只是整数常量的盟友。

struct Market {
  enum TypeGenerator { NONE, LINER, GBM }; 
  TypeGenerator movement_type;

  void update() {
    if (movement_type == TypeGenerator::NONE) {
      // ..
    } else if (movement_type == TypeGenerator::LINER) {
      // ..
    } else {
      // ..
    }
  }

};

int main() {
  Market market;
  market.movement_type = Market::TypeGenerator::NONE;
  while (true) {
    market.update();
  }
}

另一方面,在JS中,枚举是字典,因此,每个比较都应该调用字典结构(哈希表或具有昂贵调用的其他结构),因此出于优化的原因,我应该这样做:

class Market {
    static TYPE_NONE = "none";
    static TYPE_LINER = "liner";
    static TYPE_GBM = "gbm";
    static TYPE_HISTORICAL = "historical";
    movement_type: string;

    constructor(movement_type: string = Market.TYPE_NONE) {
        this.movement_type = movement_type;
    }

    update() {
        if (this.movement_type === Market.TYPE_NONE) {
            // 
        } else if (this.movement_type === Market.TYPE_LINER) {
           //
        } else if (this.movement_type === Market.TYPE_GBM) {
           //
        } ... etc
    }
}

如果我正确理解,将字符串更改为数字不会对性能产生任何影响。在c ++中,有没有更好的美丽方式来做到这一点?

0 个答案:

没有答案