将类似JavaScript的结构编译为静态,快速C ++的最佳方法是什么?

时间:2013-11-17 13:49:30

标签: javascript c++ c data-structures compiler-construction

在从非常类似于JavaScript到C ++的语言开发编译器时,我需要一种表示数据结构的方法。 JavaScript的主要数据结构是Arrays和Hash-Tables。数组更直接:我可以使用无类型指针的向量。它需要是一个向量,因为JS数组是动态的,而且是指针,因为JS数组可以包含任何类型的对象,例如:

var array = [1,2,[3,4],"test"];

除了那个以外我找不到代表这个的方法(是吗?)。对于哈希,我可以使用类似的东西,除了在访问时包括字符串哈希步骤。

问题是: JavaScript哈希被JIT编译成实际的C ++对象,这可能比哈希快得多。这样,我担心我生成类似C ++的尝试实际上会导致代码比JavaScript版本慢!

  1. 这有意义吗?
  2. 我的编译器的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

如果这是一个AOT编译器,你只能处理你在编译时看到的哈希键。在这种情况下,您可以更改对已知密钥的散列访问以进行数组访问,为每个已知密钥提供一个小整数作为索引。