使用Mac OS 10.6上的boost :: xpressive进行编译时间过长

时间:2011-02-06 10:26:46

标签: c++ macos boost compilation

我们使用boost :: xpressive来处理C ++ / ObjC应用程序中的正则表达式。自从更新到Mac OS 10.6以来,我们发现编译时间非常长(双四核MacPro上每个文件(!)1-2分钟......),其中表达式是通过sregex :: compile定义和编译的( )。此外,整个系统的性能下降导致应用程序反应迟钝;对于所有其他文件,编译按预期运行。

使用的编译器是gcc4.2,10.5和10.6。你有类似的经历和/或建议吗?有没有办法使用PCH来阻止这种情况?

谢谢和问候 的Matthias

1 个答案:

答案 0 :(得分:2)

使用模板化模板(这就是提升的一切(好吧,不仅如此,但很多))在许多编译器中都很慢。这会导致Boost.Spirit,Boost.Expressive等编译时间不佳。已知问题,Boost邮件列表上的常规主题。

你可以

  • 阅读文档并希望提示(一些Boost Libs确实记录了这些内容)
  • 也许Boost.Regex有更好的编译时间
  • 确保你只在.cpp文件中使用这些东西 - 如果你在头文件中使用那些东西你的编译时间会受到“无关”文件的影响
  • 将Boost.Expressive代码分离为单独的.cpp文件
  • 希望下一个g ++版本更好地处理模板化代码