c++ - 每次需要其中一个类的实例时,拥有一组类的额外拷贝或从文件中读取是否会占用更多内存?

标签 c++ class memory file-io

我意识到这个问题不是很清楚,所以我会扩展我的意思(如果有人能想到更好的措辞方式,那将不胜感激)。

我有一个特定的类类型(属性),另一个类(角色)的任何实例都需要几个(例如,如果游戏中有力量、智力和运气,那么每个角色将需要属性类的 3 个实例) .

每个属性的信息都存储在 AttributesList.txt 中。

是否最好在程序开始时读取一次这个文件来创建一个全局const vector<Attributes>并让每个 Character 创建一个 vector 的拷贝,只要它们存在就供自己使用,或者在每次创建 Character 时读取文件以创建其属性?

注意:为每个属性创建一个实例并在需要时使用指针引用它不是一种选择,因为每个角色的属性都有不同的值。

最佳答案

在这种情况下,您应该评估“什么更容易编码?”之间的权衡。 vs “它真的会有所作为吗?”。

一方面,由于 I/O 通常“缓慢”(与内存访问相比)并且是错误/异常的来源,因此在游戏开始时读取一次是个不错的主意。

但是,如果编码更容易并且 AttributesList.txt 文件损坏的风险很小,并且不会产生任何可衡量的性能问题,则每次您的字符类实例可能工作时重新读取文件以及。多久创建一个新角色?

当我在游戏工作室工作时,我们将编译后的对象资源保存(序列化)在磁盘上。每次创建新游戏对象时,我们都会从文件中重新读取结构。我认为我们将此作为主游戏/渲染线程的异步任务来执行,因此不会影响性能。

关于c++ - 每次需要其中一个类的实例时,拥有一组类的额外拷贝或从文件中读取是否会占用更多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28016346/

相关文章:

c++ - 将指向你自己的指针传递给你拥有的对象的替代方法

c++ - 在类外初始化一个私有(private)静态字段(本例中private的意思)并调用静态函数

php - MySQL 数据库导出 : Allowed memory size of 67108864 bytes exhausted

c++ - 如何传递二维结构数组给函数?

c++ - 全局声明类对象但不带参数

c++ - brk(0) 是否花费了太多时间?

java - 错误: This class should provide a default constructor

java - 有没有办法让 Arraylist 元素等于类构造函数?

iphone - 下载图像时出现内存警告和应用程序崩溃

c++ - 在 C++ 中追加不同的字段