5

也许 D 运行时/GC 必须在每次调用函数时都进行初始化并消失,这种方式不会使其对添加小的非常小的函数(如 string to lower、urlencode 等)有用。我不确定如何这还有效,但我已经用 C 编写了一些扩展。

4

2 回答 2

4

是的,D 运行时必须在 D 程序启动时进行初始化,并且(取决于您使用的库)需要调用静态构造函数。它很小,但是就像您说的那样,对于小型功能来说效率很低。

运行时是开源的。这是运行时的main功能

如果您只是通过 C 接口(使用extern(C))导出函数并调用它们,则无需启动运行时,但如果您这样做,则不应使用 GC 或依赖静态构造函数等。

于 2012-09-14T16:44:50.140 回答
2

这真的,真的取决于你的用例。

我在 D 中有几个脚本,它们显示内存百分比使用情况、cpu 百分比使用情况、系统负载等。我使用 #!/usr/bin/env rdmd 作为文件中的第一行作为脚本运行它们,并使它们可执行。

该脚本在第一次运行时编译一次,然后缓存的可执行文件每 2-3 秒运行一次以更新它的计数。

它们在完成工作之前只运行几毫秒,然后关闭直到再次运行。(我确实关闭了 GC,因为无论如何它都不需要释放任何东西。)

是的,使用它们是有成本的。不,这不是很好。是的,它比 Python 好几个数量级。人们仍然将 Python 用于我使用 D 的目的。我并不是说我可能会在 C 或 C++ 中获得更好的性能。

我认为对于我的用例来说,这确实无关紧要。

于 2012-11-20T04:22:01.387 回答