通过对我的应用程序进行性能分析(使用ProDelphi探查器),我发现如果此功能更快,则可以实现更好的性能:
function BooleanToYN(isTrue: Boolean): string;
begin
if isTrue then
Result := 'Y'
else
Result := 'N';
end;
正如我看到的这段代码,我认为它已经“优化”了。您认为这是一种加快速度的方法吗?
还有其他意见吗?这是旧代码,我没有编写,所以不要问我为什么会这样。
当然,我可以考虑更改应用程序的编写方式,无论如何,如果有一种方法可以加快此简单函数的速度(可能正在使用另一个现成的Delphi函数),那就太好了。
最佳答案
您的探查器很可能没有为您提供可靠的信息。此功能是程序的瓶颈,这简直令人难以置信。
改善该功能的主要选择是:
内联函数。
删除分支。
您将像这样实现选项2:
function BooleanToYN(isTrue: Boolean): string;
const
BoolStr: array [Boolean] of string = ('N', 'Y');
begin
Result := BoolStr[isTrue];
end;
当然,使函数内联是很有意义的。换句话说,应用上述两个选项。
但是,如果这对程序的性能产生了明显的变化,那将是惊人的。想一会儿。您的程序是否真的在其运行时中花费了很大一部分执行该功能?真?
分析非常困难,您应该期望探查器会提供错误的信息。使用探查器时,您应该在不信任的基础上进行操作。最初始终对其输出表示怀疑。