Строка const вызывает _UStrLAsg
, а строка ресурса заканчивается на LoadResString
.
Поскольку вопрос касается скорости, нет ничего лучше, чем делать тест.
resourcestring
str2 = 'str2';
const
str1 = 'str1';
function ConstStr1: string;
begin
result := str1;
end;
function ReceStr1: string;
begin
result := str2;
end;
function ConstStr2: string;
begin
result := str1;
end;
function ReceStr2: string;
begin
result := str2;
end;
procedure Test;
var
s1, s2, s3, s4: string;
begin
s1 := ConstStr1;
s2 := ReceStr1;
s3 := ConstStr2;
s4 := ReceStr2;
end;
Впервые я использовал AQTime, добавленный в DelphiXE, для профилирования этого кода, и вот результат.Столбец времени показывает Machine Cycles.
Я мог бы сделать много ошибок новичка, профилируя это, но, как я вижу, есть разница между const
и resourcestring
,Если заметная разница для пользователя зависит от того, что вы делаете со строкой.В цикле со многими итерациями это может иметь значение, но используется для отображения информации пользователям, не так много.