
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

e hënë maj 30, 2005
开发solaris操作系统时的一些经验
Sun公司在北京成立研究院,并把solaris操作系统拿到中国来开发实在是一件非常了不起的事情。因为solaris操作系统是世界上最好的unix
操作系统。能和业届最精英的同事们交流,是一件愉快的事,工作让自己感到高兴而不是枯燥乏味。
本来是想写一些关于我参加solaris操作系统开发时修的第一个bug来庆祝opensolaris的成立,但同事们认为那些估计很少有国内的爱好者会
看,而且会因为枯燥让别人对solaris操作系统也产生厌倦。所以想来还是先贴一些我在开发solaris操作系统的时候建立的自己的FAQ。这个
FAQ还会不断的更新。
1. 如何建立cscope来查看solaris操作系统的源程序?
solaris操作系统的平台上没有source
insight一类的软件,不过可以用cscope和vim来查看源程序,非常方便。
a.创建tags
%find . -name '*.[chly]' -exec ctags -u {} \;
b.创建cscope
%find . -name '*.[chly]' -print | sort > cscope.files
%/opt/csw/bin/cscope -b -q -k -i cscope.files
c.如何使用cscope可以参阅www.cscope.org
2.如何编译solaris操作系统kernel源程序?
这里我只能介绍SPARC平台,使用forte6.2;
%cd usr/src/uts
%dmake -j 100
3.如何安装新编译的kernel?
%/opt/onbld/bin/Install -k sun4u -t root@asas:/ -G micheng -i N31
4.从新的kernel启动
OK>boot micheng/unix
( Maj 30 2005, 01:34:31 PD PDT )
Permalink