我应该将我所有的代码分组并移动到 DLL 中吗?

Should I group all my code and move into DLLs?

如果我将我的代码分解成多个片段并将它们放入 DLL 中,我会获得更好的性能吗?

有多个DLL在性能方面有问题还是更好?还是没有任何影响?

我的项目比较大,听说DLL不适合跨平台应用。是真的吗?

没有。 DLL(s) 比静态 linked 库导致更多的加载延迟。 因为操作系统加载器需要单独打开 DLL 并且 link 它会影响时间。调用 DLL 函数并不慢,因为它们指向您的 executable 映像的导入地址 table,加载程序然后修改这些指针以匹配 DLL 中导入的符号地址。

DLL 会对性能产生积极和消极的影响。与所有性能问题一样,您应该在制定策略之前获取数据。

巨大header秒/巨大代码/缓慢编译并不意味着缓慢性能。通常情况恰恰相反:编译速度慢是因为你给了优化器很多工作空间。简单地重新安排您的项目并不会减少代码量。您只需封锁位,这样优化器就可以减少工作量。您可能会在项目结构上受益,但代价是优化机会。

许多现代优雅的 C++ 都是模板化的,并且纯粹在 header 文件中。这允许在优化器认为合适的情况下进行内联。 将代码分解成单独的图像将阻止跨图像边界的优化

还要考虑使用 DLL 的开发成本。跨 DLL 的接口呈现 lot of complications。例如,应避免在 ABI 中使用模板化 / header-inlined 代码。这是发明 COM 的全部原因:解决在 DLL 边界之间传递基本 objects 的困难。

为了尝试回答这个问题,我的直觉是“不”,将您的项目分成多个模块绝对不会提高性能,而且更有可能使其性能更差。我以大约 93% 的信心这么说。但正如我所说:正确回答您的问题的唯一方法是衡量。