我目前正在开展一个项目,我必须使用符号表跟踪不同的变量。类似于LLVM主页上提供的万花筒tutorial。
在示例代码中,他们使用std :: map来实现此功能。
static std::map<std::string, AllocaInst*> NamedValues;
在类似于教程的实际场景中,llvm::StringMap
llvm::StringMap< ValueTy, AllocatorTy >
比std :: map方法更受欢迎?
我不确定,但我真的没有看到为什么llvm :: StringMap比std :: map更受欢迎的原因。基于on these slides(幻灯片23,24),似乎llvm :: StringMap比插入和查找的std :: map和std :: unordered_map慢。
另外,正如here所解释的那样:
但是,StringMap迭代顺序不能保证是确定性的,因此任何需要它的用法都应该使用std :: map。
所以,请记住这一点,以防你最终使用llvm :: StringMap而不是std :: map。