【问题标题】:Will compiling common libraries myself improve performance?自己编译公共库会提高性能吗?
【发布时间】:2018-05-04 22:36:44
【问题描述】:

作为一个爱好项目,我正在尝试使用 Visual Studio Express 2015 编译开源游戏 Simutrans(作为对游戏玩法进行一些小改动的先驱)。它需要一些通用库(bzip、pthreads、SDL,可能还有 Allegro)。 the Simutrans compilation instructions 和一些 SDL 文档似乎都假设人们应该或将自己构建这些库。通过搜索 Stack Overflow 和其他论坛,我了解到,如果您要将某些东西移植到一个奇异的平台(PowerPC 上的 BeOs?!),有时这是必要的,以提高您的编程知识,或者因为you want specific compilation options。这些都不适用于我:我使用的是标准 Wintel 系统,我不想了解 SDL;仅仅学习 C++ 和 Simutrans 将需要数年时间。在我自己的计算机上从源代码编译库 [编辑:明显] 会以任何方式提高性能,还是有任何其他与我的情况相关的优势?

这是我近三年来的第一个编程项目,所以请假设您是在与知识最少的初学者交谈。

【问题讨论】:

  • 它会“提高性能”吗?根据您的编译器和 CPU 架构,也许?足以引起注意(在非常具体的用例之外)? 可能不会
  • 谢谢@Chad,这是一个很有帮助的评论,我已经用它来改进这个问题。

标签: visual-c++ compilation sdl libraries


【解决方案1】:

当图书馆被建造为在大量人群中使用时,它们必须被建造成最小的公分母。

构建用于部署的库时要考虑的因素是它们支持哪些平台,以及任何给定部署所需的最低规范。

在本地编译程序和库时,您可以通过针对硬件上可用的特定优化来提高性能,而这些优化在最低要求的硬件上可能不可用。

使用gcc -march=core-i7 编译的东西可以启用使软件无法在核心 i3 或 AMD FX 等上运行的选项。

您还可以在可执行文件大小与执行速度、内存访问类型等方面进行优化权衡。

对于您给定的用例,我怀疑您会看到任何明显的性能影响。也就是说,我不想低估这些优化的重要性,因为对于某些用途,它们会产生令人难以置信的差异。

【讨论】:

  • 谢谢你,Chad,这个答案正是我想要的。它确定了在某些情况下编译自己是有用的,但不是我的。
猜你喜欢
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多