小编Jan*_*ins的帖子

C++解释器概念问题

我用C++为我创建的语言构建了一个解释器.

设计中的一个主要问题是我在语言中有两种不同的类型:数字和字符串.所以我必须传递一个结构,如:

class myInterpreterValue
{
 myInterpreterType type;
 int intValue;
 string strValue;
}
Run Code Online (Sandbox Code Playgroud)

在例如:我的语言中的倒计时循环期间,此类的对象每秒传递大约一百万次.

分析指出:85%的性能是由字符串模板的分配功能吃掉的.

这对我来说非常清楚:我的解释器设计不好,并且不使用指针.然而,我没有选择:在大多数情况下我不能使用指针,因为我只需要复制.

怎么办对此?像这样的班级是个更好的主意吗?

vector<string> strTable;
vector<int> intTable;
class myInterpreterValue
{
 myInterpreterType type;
 int locationInTable;
}
Run Code Online (Sandbox Code Playgroud)

所以类只知道它代表什么类型和表中的位置

然而,这又有一些缺点:我必须在字符串/ int向量表中添加临时值,然后再次删除它们,这将再次消耗大量性能.

  • 帮助,Python或Ruby等语言的解释器如何做到这一点?它们在某种程度上需要一个表示语言中的值的结构,例如可以是int或string的结构.

c++ interpreter design-patterns

7
推荐指数
1
解决办法
916
查看次数

标签 统计

c++ ×1

design-patterns ×1

interpreter ×1