
e diel qershor 11, 2006
编写高性能的程序(1)
编写高性能的程序(1)
当现在CPU越来越快,内存越来越大的时候,我发现许多程序却越跑越慢。往往同一个大型应用程序的下一个版本要比以前对机器的要求高许多。当然许多时候是
因为功能越来越多的缘故。但是还是有许多其它的原因,比如为了赶进度而无法很好的优化。但是还是有一些地方对程序的性能有要求,比如对网络数据的处理,这
是因为CPU的性能不能完全胜任对网卡的处理,尤其在有防火墙的时候。
要想得到一个良好性能的程序,需要从两个方面来考虑。一个是良好的算法,一个是良好的编程风格和充分利用CPU和memory。
良好的算法,让我们在完成相同工作时,使用最少的工作量。比如快速排序要比冒泡排序快,因为它的工作量要少。这个时候往往和机器无关。
在同样的算法的时候,一个良好编程风格的程序,一个能充分利用CPU和memory的程序能更快的运行并得到结果。
良好编程风格,指在实现算法的时候,让程序产生最少的执行代码量。比如将for循环中的代码移到外面。例如,下面的例子中是从网上随便找的,
for (i = 0; i < bufsize - 4; i += 4)
*(bof_ptr++) = get_sp() - offs;
......
for (i = 0; i < strlen(shellcode); i++)
*(ptr++) = shellcode[i];
毫无疑问,i < bufsize - 4;和i <
strlen(shellcode);都会让for循环每次都要计算一下bufsize -
4和strlen(shellcode)的值,那么性能肯定不好。正确的应该是在for循环外面先求值。
这里主要先讨论第二点中的如何充分利用CPU和memory。
因为许多时候程序的执行代码最少,但运行不一定最快。
( Qer 11 2006, 02:34:54 PD PDT )
Permalink