05 2011 档案

摘要:在优化程序时偶然看到这篇二分查找常见问题以及《算法珠玑》上的优化算法,但却并不完整.在自己程序中测试了一下,改为最终的优化版后(也就是《珠玑》上的program4),比program1能提升10%左右,这和具体运算的内容有关~。如果序列中有多个相同的元素时,查找的时候不见得每次都会返回第一个元素的位置, 比如考虑一种极端情况:序列中都只有一个相同的元素,那么去查找这个元素时,显然返回的是中间元素的位置.其次, 前面给出的算法中,每次循环体中都有三次情况,两次比较,有没有办法减少比较的数量进一步的优化程序?<<编程珠玑>>中给出了解决这两个问题的算法,结合前面提到溢出问题 阅读全文
posted @ 2011-05-08 23:30 阿亮同学 阅读(834) 评论(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 阿亮同学 阅读(967) 评论(0) 推荐(0) 编辑
摘要:为了调试游戏,有时需要参考玩家的系统信息,试了下,发现用高精度计时器可以获得较为准确的结果。(原代码作者不详,有改动)//精确延时获得CPU频率#include <windows.h>int CPU_Frequency(void) //MHz { LARGE_INTEGER CurrTicks, TicksCount; __int64 iStartCounter, iStopCounter; DWORD dwOldProcessP = GetPriorityClass(GetCurrentProcess()); //纪录和提高优先级 DWORD dwOldThreadP = Get 阅读全文
posted @ 2011-05-08 23:16 阿亮同学 阅读(1511) 评论(0) 推荐(0) 编辑