加快D程序的速度

问题描述 投票:3回答:1

我正在一个非常苛刻的项目(实际上是一个解释器),完全用D编写,我想知道通常会建议哪种类型的优化。该项目大量使用了GC,类,关联数组以及几乎所有内容。

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

但是,尽管听起来很基本,但我想建议您提出一些可以帮助提高性能的建议,无论与D语言是否相关。 (我肯定我错过了几件事)。

optimization d micro-optimization dmd ldc
1个回答
2
投票
  • 编译器标志:如果程序将在您的计算机上运行,​​我将添加-mcpu=native。除了-Os以外,不确定-O3有什么作用。

  • 概要已在注释中提及。就Linux而言,我个人有一个脚本可以转储进程的堆栈跟踪信息,我做了几次以了解它挂在哪里的想法。

  • 不确定GS是什么意思。

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.