2

我正在使用yaml-cpp库,默认情况下会生成与位置相关的静态库 ( libyaml-cpp.a)。我自己的库编译成两个版本,静态和共享。因为我需要共享一个,所以我必须打开 PIC yaml-cpp(这是最简单的部分)。但是,现在我是否会在静态库中受到性能影响?如果是,有多大?

基本上,我有三个选择:

  1. 编译yaml-cpp两次,一次依赖于位置,一次编译,将适当的一次链接到我的共享和静态库中
    • 优点:可能是最好的性能,我的共享和静态都使用相同的目标文件(意味着 .cpp 只编译一次)
    • 缺点:可能大多数设置,yaml-cpp将被编译两次,但这不重要,我不会改变它(经常)
  2. 编译yaml-cpp一次作为 PIC,将其链接到我的共享(PIC)和静态(非 PIC)
    • 优点:易于设置
    • 缺点:源代码需要编译两次(共享(PIC),静态(非PIC))
  3. 编译yaml-cpp一次作为 PIC 并将我的(共享和静态)编译为 PIC
    • 优点:易于设置
    • 缺点:静态性能受到轻微影响?

所以选项 1 似乎是最好的。我的摘要中有任何错误的假设吗?还是我错过了任何其他选择?

平台:amd64

4

1 回答 1

0

PIC 的缺点是应用程序性能的适度下降(通常为 5% 到 15%)

于 2020-02-21T13:36:12.890 回答