c++ - 垃圾收集 - 响应能力

标签 c++ c garbage-collection

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

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

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


现在我有以下情况。 假设您使用第一人称视角创建游戏。并且假设游戏逻辑是用一种带有垃圾回收的语言编写的。

这是否意味着与玩游戏逻辑是用没有垃圾收集的语言编写的游戏相比,用户会遇到更多的输入延迟?

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

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

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

最佳答案

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

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

关于c++ - 垃圾收集 - 响应能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869450/

相关文章:

garbage-collection - 类型安全与垃圾回收实用性的关系

javascript - 找出代码中哪一部分导致了 JS 中垃圾回收的最多

c++ - 通过引用重载多个函数对象

c - 在 C 中打开 .ts 文件并一点一点地读取流文件的内容

C 程序将文本文件中的模式 "find"替换为 "replace"作为输入和输出文件应该具有替换模式

c - 如何将SCANF定义为以后的安全函数scanf_s()?

go - gctrace中与时间相关的字段

c++ - 将 2D vector 转换为 C 类型的最佳方法(对于 SGX enclave)

c++ - tao_idl -GSTL 不映射 std::string

c++ - 使用 g++、make、cmakelists 在 linux openSUSE 上编译 googletest 程序