您现在的位置:首页 >> 基础算法 >> window基础 >> 内容

Delphi中用Const来提高应用程序在多核多线程下的性能

时间:2011/9/3 15:28:23 点击:

  核心提示:我们经常在DELPHI中用const来定义常量,用const来保护函数参数,其实在用const保护函数参数还有另一个更为重要的作用,提高应用程序的执行效率,尤其是在多线程多核下效果更明显。原因是:普通...

我们经常在DELPHI中用const来定义常量,用const来保护函数参数,其实在用const保护函数参数还有另一个更为重要的作用,提高应用程序的执行效率,尤其是在多线程多核下效果更明显。原因是:普通的函数参数如Add(AValue: string),编译器在传入参数的时候先把变量复制一份,然后当成AValue传入Add,函数结束的时候进行销毁,你在参数上加了const,编译器在传入参数的时候不会进行复制,而是直接传地址,并在编译期间检查不能修改AValue值,我们知道DELPHI的内存管理在申请内存的时候是会加锁的,因此如果调用函数频繁,而且没有加const,这样会造成线程排队等候,性能会不如单线程,const只是对string、结构体等非基本类型有提高效率的作用,对Integer等基本类型(栈变量)不起作用。

1、const的类型检查,以下代码可以修改const参数的值

procedure TFmMain.EditConstParameter(const ARecordTest: TRecordTest);
var
  pPoint: PRecordTest;
begin
  pPoint := @ARecordTest;
  pPoint.A := 1;
  ShowMessage(IntToStr(ARecordTest.A));
end;

procedure TFmMain.btnEditConstClick(Sender: TObject);
var
  ARecordTest: TRecordTest;
begin
  ARecordTest.A := 0;
  EditConstParameter(ARecordTest);
  Inc(ARecordTest.A);
  ShowMessage(IntToStr(ARecordTest.A));
end;

2、const提高代码性能,使用const提高代码性能,大家可以把以下例子在自己电脑上测试。

600) this.width = 600;">



迅雷专用高速下载

作者:网络 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 盒子文章(www.2ccc.com) © 2024 版权所有 All Rights Reserved.
  • 沪ICP备05001939号