《游戏的优化》PPT课件

上传人:san****019 文档编号:22474630 上传时间:2021-05-26 格式:PPT 页数:53 大小:2.26MB
收藏 版权申诉 举报 下载
《游戏的优化》PPT课件_第1页
第1页 / 共53页
《游戏的优化》PPT课件_第2页
第2页 / 共53页
《游戏的优化》PPT课件_第3页
第3页 / 共53页
资源描述:

《《游戏的优化》PPT课件》由会员分享,可在线阅读,更多相关《《游戏的优化》PPT课件(53页珍藏版)》请在装配图网上搜索。

1、游戏的优化不仅仅是帧速率 我们将谈论什么?n何时何地需要做优化?n C 和 C+ 的比较n C+中的性能问题n算法优先n我们需要 C+ 的高级特性吗? 优化无处不在n最好的优化器是你的大脑,而不是编译器n评测而不是臆测n Windows 游戏不应该有特权Windows 游戏首先是一个 Windows 程序每一点资源的节省都将是有意义的n专家的选择是不优化 FPS?n提高了 10 fps 表示什么含义?10fps-20fps 100fps-120fpsn最高帧速率和平均帧速率n Loading 时间n关心一下 CPU 占用率了解 Windows 多一点 记时器n TimeGetTimen Que

2、ryPerformanceCountern RDTSC精度多任务环境的影响流水线测不准原则 微观和宏观n微观上的优化CPU指令、流水线吞吐量、等待时间有限的硬件优化有限的编译器优化n宏观上的优化算法和代码结构的改进减少需要处理的数据量,减少处理的频率和次数 C 与 C+ 微观上的比较n C 比 C+ 快 10%?不要迷信书本证据?n C+ 编译器的改进更合理的参数传递方式Inline堆栈和函数调用静态变量的使用 C+提供更强的语言特性n new/delete malloc/freen C+ exception setjmp/longjmpn虚函数 函数指针数组n Template宏n标准库 C

3、 的优势n简单n可移植性更强n接口简洁n更少的二义性n CRT 开销小n编译速度快 C+ 需要了解更多 STLn最被人喜爱的容器std:mapstd:stringstd:vectorstd:listn大多数情况他们没有被正确的使用 std:mapn插入是很慢的 O(log(N)n有额外的内存消耗 (三个指针+颜色)n大多数情况,我们需要的只是查找数组+二分查找n Hash map 通常可以提高效率,但不绝对n还有更多的优化手段lua 的实现大话西游的实现 std:stringn还有一种字符串叫作 const char *n const std:string 为什么不用 itoa ?n spri

4、ntf(s,”);为什么不用 s0=0;n printf 与 putsn不要忽略 CRT 的开销 重写 CRT?n优化 memcpy:MMX 版本、SSE 版本任何小于 64k 数据复制的优化都没有意义n重写 string 库,MyStrlen MyStrcmp CRT 可以做的更好n Intrinsic 函数#pragma intrinsic() 内存优化n展开循环,消除数据相关性n数据并行处理n减少数据结构的尺寸,让数据尽量紧凑的放在一起n数据对齐n了解内存的工作方式 内存管理优化n C+ 提供了更灵活的内存管理机制n new/delete 不一定是最好的方式(STL就不用)n自定义内存分

5、配器n方便调试n分配速度和内存碎片同样重要n注意分离模块的问题DLL 最容易出错 算法n C+ 更适合实现更复杂的游戏引擎n引擎的复杂度提升,层次的增加,会降低效率n更高的复杂度是为了宏观上的优化 脏矩形 问题n脏矩形的合并算法并不简单 n合并后的脏区域并不是一个矩形,不方便做图片裁减 n有许多的物体在屏幕上移动 n卷动屏幕 n图像引擎设计的复杂度 改进的脏矩形n分格处理n渲染管道n绘图操作对象化 滚动优化n更大的back buffern破碎的分格 覆盖优化 C+的高级特性天使还是恶魔? Template 避免重复的代码void _blit(pixel *dst,const pixel *sr

6、c,size_t s,bool mask_blit) for (size_t i=s;i!=0;-i,+dst,+src) if (!mask_blit | *src!=mask_color) *dst=*src; template void _blit(pixel *dst,const pixel *src,size_t s) for (size_t i=s;i!=0;-i,+dst,+src) if (!mask_blit | *src!=mask_color) *dst=*src; void blit(pixel *dst,const pixel *src,size_t s) _blit

7、(dst,src,s);void mask_blit(pixel *dst,const pixel *src,size_t s) _blit(dst,src,s); 矩阵运算n Matrix A,B,C;n A=B+C;Matrix operator+(const Matrix Matrix n如何避免临时对象的返回?转化为 A=B; A+=C; Expression Templatestemplateclass add_type const Tconst Tpublic:add_type(const T result+=_rhs;return result; ; template add_t

8、ype operator+(const T class Matrix /* . */ Matrix Matrix /* . */ 编译时计算templateclass factorial public: enum value = N * factorial:value ;template class factorial public: enum value = 1 ; 冒泡排序inline void compare_swap(int a=b;b=t;void sort(int *data,int n) for (int i=0;in-1;i+) for (int j=i+1;jn;j+) co

9、mpare_swap(datai,dataj); templatestruct inner_loop static inline void expand(int* data) compare_swap(*data, dataN);inner_loop:expand(data);template struct inner_loop static inline void expand(int*) ;templatestruct sort static inline void expand(int* data) inner_loop:expand(data); sort:expand(+data);

10、 ;template struct sort static inline void expand(int* data) ; int main() int a=3,2,1;const int len=sizeof(a)/sizeof(a0);sort:expand(a);for (int i=0;ilen;i+) printf(%d,ai);/ sort:expand(a) 展开后的代码compare_swap(*data,data2);compare_swap(*data,data1);+data;compare_swap(*data,data1); 尽可能的在编译时运算?n还有更多的 template 技巧Modern C+ Design - Generic Programming and Design Pattens Appliedn滥用 template 的后果编译速度下降模块间耦合度增加对开发伙伴要求增加调试不便 编译效率同样重要n尽可能的,正确的,使用动态连接库n允许的话,用 .c 编写部分代码n减少 .h 依赖预编译头文件是万恶之源n简单的东西更具有美感 Q&Ahttp:/

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!