0

一周前,我的教授谈到了垃圾收集及其响应能力。基本上他说,如果你使用垃圾收集,在代码执行之前总会有一个非常小的延迟。

现在您可以说用户不会识别延迟,因为它非常小。

我正在为我的期末学士考试开发一个游戏引擎,我目前正在决定为我的引擎选择哪种脚本语言。


现在我有以下情况。假设您使用第一人称相机创建游戏。我们还假设游戏逻辑是用带有垃圾收集的语言编写的。

这难道不意味着用户会遇到比玩游戏逻辑用没有垃圾收集的语言编写的游戏更多的输入延迟吗?

现在输入延迟很难预测,因为有很多系统会产生延迟。

例如input -> gamecode executing -> graphics rendering -> rendering on the screen

如果我使用带有 gc 的语言与没有 gc 的语言,我将有多少延迟可以大致预测吗? <1ms, <10ms <100ms

4

1 回答 1

1

关于 GC 唯一“可怕”的事情是(1)它可能会“感觉”更慢,因为它一次清理了许多对象,而不是像你做的那样随着代码的进展而费心地一个一个地去做使用手动内存管理,并且 (2) 它是不确定的,这使得它有些不可预测(但不像听起来那么可怕)。

除了 GC 发生在特定时刻之外,它不会使您的代码“不断”变慢。事实上,我想说的是,当它不在 GC 中时,程序会变得更快一些,因为在 GC 之外,它不会像在非 GC 语言中那样(并且应该)清理对象,而内存管理机制GC 后面通常意味着分配比非 GC 语言快一点。

于 2012-12-14T00:42:11.163 回答