在变量中存储对数据库条目的引用的效率

本文关键字:引用 效率 数据库 变量 存储 | 更新日期: 2023-09-27 18:05:37

我目前正在制作一个简单的数据库结构,用于存储游戏引擎中使用的组件信息。

我有两个组成数据库的类:DBEntry_Name—组成数据库中的每个条目的类和NameDB—数据库本身。

我没有那么多的问题,但查询数据库条目的引用如何存储(在内存使用方面)在变量中。我的一些条目包含对完全不同数据库中的其他条目的引用。下面是一个典型条目的示例:

public class BuildingDB {
    private static List<DBEntry_Building> AllBuildings = new List<DBEntry_Building>();
    #region Towers
    public static DBEntry_Building Tower = new DBEntry_Building {
    ID = 1, // <== this is due to by replaced by a reference to the List index of the entry
    Name = "Tower",
    Prefab = Resources.Load("Prefabs/Tower") as GameObject,
    Cost = 10,
    BuildTime = 5.0f,
    AttackSpeed = 1,
    AttackDamage = 10,
    AttackRange = 7,
    ProjectileType = ProjectileDB.Rock, // <==== is this storing excess information? could we request the ID of the projectile and store that instead?
};
#endregion
}

我可以通过使用函数将DBentry交换为整数来替换我有问题的行,然后可以交换为数据库列表的索引,但这是必要的吗?我的怀疑是,ProjectileType将占用更多的内存比一个简单的int,因此为什么我问这个问题。

如何存储ProjectileType ?它的所有值也会被存储,还是会从弹丸数据库中检索?

谢谢。

在变量中存储对数据库条目的引用的效率

正如我在评论中已经提到的。这取决于你瞄准的是哪个平台。最快的解决办法就是观察,或者如

所述

…您不应该因为认为会获得性能增益而进行优化。有一些明显的优化(比如不在紧循环中进行字符串连接),但在可以测量之前,应该避免任何不明显的优化。~ 程序员SE

所以除非你知道你想要移植的目标平台,也就是手机移植,否则你无法处理额外的内存负载。或者至少可以衡量性能差异/对机器的影响,不值得考虑太多。

你可以做一个粗略的假设。我真的需要这些浮点数、精灵数和整数吗?或者我可以只凭身份证四处走动吗?我以后会加载对象吗?等。关于何时开始这类优化的其他一些技巧可以在这篇文章中找到,何时优化过早