随笔分类 -  调试优化

摘要:nav,即navigation,现行3D游戏主流寻路方式,起源的思路是和A*完全不同的,因为navmesh不需要一张二维表,只需要利用模型阻挡生成一张近似寻路用的“mesh”。 细节不多提及,参见http://www.ai-blog.net/archives/000152.html中的示例, A*寻路中,可以借用他的思想做出效果非常好的优化,在游戏中测试512×512的寻路速度在几个毫秒内即可完成。 在生成阻挡点信息时,将整块没有阻挡点的凸多边形(这里全部使用四边形)合并为一块navmesh,生成若干mesh再使用navigation思路进行首次路径生成。测试512×512 阅读全文
posted @ 2011-12-26 12:44 阿亮同学 阅读(9197) 评论(0) 推荐(0)
摘要:在调试一处宕机时发现在某种情况下,容器导致的异常并没有产生dump文件,原因是Checked Iterator机制导致迭代器异常抛出,而未被catch捕获。(Checked Iterator是指具有越界检查功能的迭代器,并且会在检查到越界操作时触发运行时错误处理。)_SECURE_SCL如果定义为0,迭代器检查(Checked Iterator)将被禁用。事实上如果开启了迭代器检查,每次内存偏移都会调用_invalid_parameter_noinfo,导致操作更耗时,有兴趣可以在汇编中对比两者——所以,建议在编写release版本时手动关闭该宏。 阅读全文
posted @ 2011-06-21 11:41 阿亮同学 阅读(2196) 评论(0) 推荐(1)
摘要:在优化程序时偶然看到这篇二分查找常见问题以及《算法珠玑》上的优化算法,但却并不完整.在自己程序中测试了一下,改为最终的优化版后(也就是《珠玑》上的program4),比program1能提升10%左右,这和具体运算的内容有关~。如果序列中有多个相同的元素时,查找的时候不见得每次都会返回第一个元素的位置, 比如考虑一种极端情况:序列中都只有一个相同的元素,那么去查找这个元素时,显然返回的是中间元素的位置.其次, 前面给出的算法中,每次循环体中都有三次情况,两次比较,有没有办法减少比较的数量进一步的优化程序?<<编程珠玑>>中给出了解决这两个问题的算法,结合前面提到溢出问题 阅读全文
posted @ 2011-05-08 23:30 阿亮同学 阅读(858) 评论(0) 推荐(0)
摘要:vtune需要运行在intel处理器的电脑上,在AMD上好像只能使用callgraph。调试时需要有源代码或者相应的PDB文件:pdb生成办法:打开/Zi /debug生产pdb文件,PBD只需和运行程序放在同一目录即可。分析完后,默认是按照CPU_CLK_UNHALTED排序的。需要关注的内容:Event based sampling :测程序执行中处理器的内部事件(Performance Monitor Unit:PMU)发生次数(及样本)。Sample After Value (SAV):当事件达到一定的累积,去获得一个样本. SAV就是一个事件的设定值.如,CPU得主频是2G Hz, 阅读全文
posted @ 2011-05-08 23:24 阿亮同学 阅读(1030) 评论(0) 推荐(0)