专栏首页逍遥剑客的游戏开发GameEngineArchitecture读书笔记(三)

GameEngineArchitecture读书笔记(三)

  • 内存管理
    • C++默认的new效率比较低
    • 如果算法都一样的话, 好的内存管理策略还可以提升一部分性能
    • 可以通过预分配来减少动态分配的次数(memory pool)
    • SIMD数学库有内存对齐的需求(XNAMath)
    • Cache Miss
      • CPU访问RAM比较慢, 所以中间有个比较快的Cache
      • CPU访问数据时会从RAM拷贝一段到Cache, 如果Cache中正好有, 那么就会比较快的响应; 如果没有, 就要重新载入另一段到Cache
      • Cache Miss没法避免, 但是可以在程序策略上减少发生的次数
      • 减少Data Cache Miss的方法
        • 尽量把你的数据组织在一个连续的内存中
        • 每份尽量小(可以使用位域操作)
      • 减少Instruction Cache Miss的方法
        • 性能相关的代码段尽量不要调用函数
        • 如果非要调用函数, 请放把函数在同一个CPP里
        • 使用inline函数
    • 如果懒得自己做, 可以使用tbb的或nedmalloc
  • 资源和文件系统
    • 文件系统
      • 建议都使用"/"路径分隔符, 并且提供路径的处理工具函数类
      • 异步IO应该在这一层提供支持
    • 资源管理
      • 版本控制最好集成到管理工具中
      • 可以建立一个资源数据库, 方便检索
      • 资源"编译器", 资源的格式转换与优化可以放在这一步来做
      • 文件打包可以减少磁盘的seek time
      • 资源数据压缩可以在文件包这一层做
      • 可以使用序列化来减少文件格式的混乱, 不过C++天生缺少这一特性

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 面向对象vs面向数据

    逍遥剑客
  • C#脚本实践(五): 调试器

    逍遥剑客
  • 多线程调用的封装技巧

    逍遥剑客
  • 关于CPU Cache -- 程序猿需要知道的那些事

    随着工艺的提升最近几十年CPU的频率不断提升,而受制于制造工艺和成本限制,目前计算机的内存主要是DRAM并且在访问速度上没有质的突破。因此,CPU的处理速度和内...

    Linux阅码场
  • Spark Cache 性能测试

    此测试的目的在于评判各种Cache IO的性能,测试中采用Spark自带的Kmeans算法作为测试基准(Spark版本为2.1),该算法Shuffle数据量较小...

    涂小刚
  • asp.net core 系列之Response caching(1)

    讲解了cache-control,及对其中的头和值的作用,及设置来控制response caching;

    Vincent-yuan
  • Java线程安全策略总结-0

    newHashMap已经是不可变,不能再添加新元素了。如果再进行put操作,会抛出java.lang.UnsupportedOperationException...

    用户2032165
  • 没想到你是这个样子的置信区间

    在关联分析的结果中,对于odd ratio值会给出95% CI的结果,这里的CI其实是confidence interval的缩写,代表置信区间。那么置信区间有...

    生信修炼手册
  • NVIDIA CUDA9RC版本:到底改变了什么?

    今日,NVIDIA正式宣布可以在官网下载CUDA9.0RC版本,肯定有不少CUDA开发者很想知道CUDA9.0版本到底增加了哪些新的功能。 ? 总的来说,就是这...

    GPUS Lady
  • 一种小型后台管理系统通用开发框架中的Cache缓存设计

    本篇博客记录一下我在实习的公司的后台管理系统开发框架中学习到的一种关于网站的缓存(Cache)的实现方法,我会在弄懂的基础上,将该方法在.net core上进行...

    CherishTheYouth

扫码关注云+社区

领取腾讯云代金券