gpt4 book ai didi

optimization - 使 D 程序更快的方法

转载 作者:行者123 更新时间:2023-12-03 16:51:57 24 4
gpt4 key购买 nike

我正在从事一个要求非常高的项目(实际上是一个解释器),完全用 D 编写,我想知道通常会推荐什么类型的优化。该项目大量使用了 GC、类、关联数组以及几乎任何东西。

关于编译,我已经对 DMD 和 LDcflags进行了试验,并且 LDC 和 -flto=full -O3 -Os -boundscheck=off 似乎有所不同。

然而,尽管这听起来很简陋,但我希望您提出任何您想到的有助于加快性能的建议,无论是否与 D 语言相关。 (我确定我遗漏了几件事)。

最佳答案

  • 编译器标志:如果程序将在您的机器上运行,我会添加 -mcpu=native。不确定 -Os 除了 -O3 之外还有什么效果。

  • 分析已在评论中提及。我个人在 Linux 下有一个转储进程堆栈跟踪的脚本,我这样做了几次以了解它卡在什么地方。

  • 不确定 GS 是什么意思。

  • 既然你提到了类:在 D 中,方法默认是虚拟的;虚拟方法添加间接并且不可内联。确保只有那些必须是虚拟的方法是。看看您是否可以使用一种不涉及间接的多态形式重写您的程序,例如使用模板元编程。

  • 既然您提到了关联数组:它们大量使用了 GC;为了加快它们的速度,切换到在 std.allocator 之上工作的第三方库,例如 https://github.com/dlang-community/containers

  • 如果您的代码的某些部分是可并行化的,std.parallelism 是一个很好的工具。

  • 既然您提到该项目是一个解释器:有许多途径可以优化它们,直至 JIT/AOT 编译。也许您可以链接到现有的库,例如 LLVM 或 libjit。

关于optimization - 使 D 程序更快的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58447104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com