Timing Anonymous Methods 计时功能匿名函数
开发者们经常需要添加计时代码到一个已有的常规过程中,比较他们的相关速度。前面例子已经使用了几次实例,指出Uncode字符执行速度。对比两个代码片段,比较他们的执行毫秒数,妳可以写出下面内容(在本书第二章的“转换字符”例子):
为了避免多次重复计时代码,妳可以写一个调用计时函数,通过无参方式的匿名方法调用代码片段:
在下面例子妳可以发现一个更轻巧(也更精确的)版本,使用GetTickCount可以而不是以Now函数。虽然你可能寻找更精确计时服务QueryPerformanceCounter API。
执行标准版本的和依赖匿名方法的将获得如下结果:
Classic
AnsiUpperCase (string): 00:00.588
AnsiUpperCase (AnsiString): 00:01.087
Anonymous
AnsiUpperCase (string): 00:00.644
AnsiUpperCase (AnsiString): 00:01.153
就像你所看到的,匿名方法版本的差异8%。是因为直接执行本地代码,程序使用了虚方法调用到匿名函数的实现。这些不同还体现在,测试代码使用更好的方式。如果需要在代码中用squeeze性能,使用匿名方法,妳不能到直接方式的代码,使用直接函数调用那么快。使用方法指针将可能需要在性能的取舍中权衡。