相关疑难解决方法(0)

使用`const`教条还是理性?

在Delphi中,您可以通过传递参数来加速代码const,例如

function A(const AStr: string): integer;

//or

function B(AStr: string): integer;
Run Code Online (Sandbox Code Playgroud)

假设两个函数内部具有相同的代码,它们之间的速度差异可以忽略不计,我怀疑它甚至可以用循环计数器测量,如:

function RDTSC: comp;
var
  TimeStamp: record case byte of
    1: (Whole: comp);
    2: (Lo, Hi: Longint);
  end;
begin
  asm
    db $0F; db $31;
    mov [TimeStamp.Lo], eax
    mov [TimeStamp.Hi], edx
  end;
  Result := TimeStamp.Whole;
end;
Run Code Online (Sandbox Code Playgroud)

其原因是const函数A 中的所有操作都是为了防止引用计数AStr增加.
但是增量只需要我的多核CPU的一个核心的一个周期,所以......

我为什么要打扰const?

delphi parameters const

23
推荐指数
4
解决办法
1641
查看次数

为什么Sysutils.RenameFile内联?

[dcc32提示] H2443内联函数'RenameFile'尚未展开,因为在USES列表中未指定单位'Winapi.Windows'

我知道内联函数可以使代码更快.但我只看到了紧张的地方.例如,在一个大循环中调用一个小函数.

但如何内联IO功能可以提高速度?我的意思是通过内联RenameFile你可以获得几微秒.但是如果磁盘忙,执行函数本身可能需要几毫秒,甚至几十毫秒.

更重要的是,如果您使用的是RenameFile,那么您可能正处于执行其他I/O操作的代码块中.因此,这段代码将花费大量时间.所以,现在的收益更加微不足道.

delphi inline

12
推荐指数
1
解决办法
419
查看次数

标签 统计

delphi ×2

const ×1

inline ×1

parameters ×1