《游戏编程模式》 部分笔记

发布时间 2023-03-31 17:11:24作者: 章章_思游容

游戏编程模式_中文版

GPT3.5 bot 以下代称 伊芙琳(她提供的内容不完全可靠,需自行分辨)

伊芙琳:
软件架构和抽象化是为了使代码更灵活、易于理解、易于维护和扩展。但是,这些模式通常会增加运行时的开销。例如,虚拟调度可能会导致代码执行速度较慢,因为程序需要花费更多的时间进行函数查找和指针操作;接口和消息传递等机制也可能需要额外的开销。 这在游戏开发中尤其成问题,因为任何性能损失都可能影响游戏体验。因此,对于游戏引擎和其他需要高性能的应用程序,开发人员需要认真考虑软件架构和抽象化的使用情况,并准确评估相关成本和收益。

一个有趣的反面例子是C++中的模板。模板编程有时可以带来没有运行时开销的抽象接口。

这是灵活性的两极。 当写代码调用类中的具体方法时,你就是在写的时候指定类——硬编码了调用的是哪个类。 当使用虚方法或接口时,直到运行时才知道调用的类。这更加灵活但增加了运行时开销。

模板编程是在两极之间。在编译时初始化模板,决定调用哪些类。

解释一下

伊芙琳:
在C++中,模板是一种通用机制,它定义了一组泛型类型和算法,允许程序员在不知道具体类型的情况下编写代码。通过使用模板,程序员可以获得没有运行时开销的抽象接口。

具体来说,当程序员使用模板编写代码时,在编译时会对模板进行实例化,并将代码生成为针对特定类型的函数。因此,相对于使用虚方法或接口,在调用过程中不需要进行额外的运行时查找操作,这就减少了运行时的开销。

然而,应该注意的是,使用模板编程也有其缺点。当程序员使用模板编写代码时,他们需要确保提供给模板的每个类型都能够正确处理,这可以增加代码量并且可能会导致代码难以理解。另外,为了避免模板实例化的数量过多(例如,如果不同的算法需要使用相同的数据结构),程序员可能需要使用显式实例化和部分特化等技术,这增加了代码复杂性。

综上所述,模板编程是一种灵活的编程方式,在编译时提供了较高的性能和抽象度,但也需要程序员更多地考虑代码的细节和实现细节。