面向数据
DOD, Data-Oriented Design, 面向数据编程. 或许在面向对象的时候我们主要考虑的是这个“世界”如何被我们抽象, 被我们理解. 但是 DOD 的思想让我们更偏向去考虑在机器当中, “每一帧”的数据应当如何组织, 如何排列, 可以使得其运行效率更高.
TAG_COLLECTION //
共有 17 篇笔记使用了这个 Tag。
DOD, Data-Oriented Design, 面向数据编程. 或许在面向对象的时候我们主要考虑的是这个“世界”如何被我们抽象, 被我们理解. 但是 DOD 的思想让我们更偏向去考虑在机器当中, “每一帧”的数据应当如何组织, 如何排列, 可以使得其运行效率更高.
先看看来自 Wikipedia 的好图 ——
单独实现一个可执行程序作为Benchmark,不依赖 Editor 的运行.
基准测试,其文件命名与存放和测试文件一致。
先生成一份纯数据的场景描述,然后丢给下一步的工厂BenchmarkSceneFactory进行实例化,构建真实的场景
简单讲述一下 SIMD 和 SIMT SIMD
简单记录下把一个“桶”展平的思路
简述一下Google Benchmark的使用。
拆分Profiler中的宏定义和展开这块的内容 ——
把 ProfilerScope 和 ProfilerFrameScope 做一次 RAII 封装,保证有Begin就一定有End
如果热路径存储的是字符串,假设一直在每一帧运行的话 ——
定义 ProfilerEvent —— 把一次 profiler 的行为打包,形成一个固定格式,而不是随意乱写的数据(
先说明一下字段的定义,和 Session 比较简单的零碎边缘,把内部的具体实现留到下次说明
聚焦外部调用 BeginFrame / BeginZone / RecordCounter / RecordInstant 后,Session 如何构造事件,并把它交给下一层,即 ——
说明多线程中,每个线程获得和维护自己的 profiler threadId 和事件 buffer
实现一个简单的 Function Wrapper, 让传给 Job System 的 Callable 在 Runtime 打包
众所周知,存储元素,动态扩容,连续存储的容器 —— vector