三月 2010

减小Delphi2010程序的尺寸

因为Delphi2010中引入了新的RTTI反射机制,会导致编译出来的程序很大。禁用RTTI反射可以减小文件的尺寸

在工程的Uses语句前添加下面的定义就可以禁用RTTI反射

{ Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) }
{$IF CompilerVersion >= 21.0}
  {$WEAKLINKRTTI ON}
  {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
{$IFEND}

 

参见http://www.zipplet.co.uk/index.php/content/articles_programming_delphi2010rtti

Flex Builder 4发布了

不知道有啥新特性,就知道专业版便宜了300美元。BlazeDS还没有升级到4.0,不知道为啥

多核时代的多线程性能优化

随着摩尔定律的失效,CPU的计算能力不再是可以廉价获得的无限资源了。在多核时代,提高系统的运行速度,采用并发的多线程无疑是最重要的手段了。

在多核系统中,采用何种并发制御方式会极大的影响系统的运行效率,这两天做了一些实验。通常来说,多线程的并发制御主要分为两大类,一类是Polling的轮询方式,也就是Sleep, SwitchToThread,还有一类就是Blocking的阻塞方式,比如Mutex,WaiteForSingleObject这类方式。

简单实验的结果,发现系统的CPU数目越多,并发的线程数越多,使用阻塞方式进行同期制御的程序会更快一些,同时因为不需要轮询,所以CPU的占用率更低。反之,CPU和并发线程数少的时候, Polling的方式更有优势。

 

为了测试比较多线程的性能,这次用了Intel的Vtune中的Thread Profiler,发现还是相当好用的,不过要注意Intel Profiler无法直接监视基于内存变量的同期制御。这时要调用Profiler的API来告诉Profiler,同期计数器开始,结束,取得,释放的时间点才行。

 

 

 

受伤了

前两天坐自动扶梯的时候,脚下拌蒜,结果来个后空翻,右边肋骨被磕了一下,这两天好痛,起床都要运半天气。幸好还没有骨折,算是不幸中的万幸。好痛苦呀