当前位置:  开发笔记 > Android > 正文

StringReplace替代方案以提高性能

如何解决《StringReplace替代方案以提高性能》经验,为你挑选了3个好方法。

我正在使用StringReplace将生成的XML中的>和<替换为char本身,如下所示:

StringReplace(xml.Text,'>','>',[rfReplaceAll]) ;
StringReplace(xml.Text,'<','<',[rfReplaceAll]) ;

事情是,取代>的每一次出现都需要太长时间.

你是否有更好的想法让它更快?



1> Bruce McGee..:

如果您使用的是Delphi 2009,使用TStringBuilder时此操作比使用ReplaceString快3倍.它也是Unicode安全的.

我用从文本http://www.CodeGear.com与"<"和">"改变所有出现"<",并">"作为我的出发点.

包括字符串赋值和创建/释放对象,这些在我的系统上分别花了大约25ms和75ms:

function TForm1.TestStringBuilder(const aString: string): string;
var
  sb: TStringBuilder;
begin
  StartTimer;
  sb := TStringBuilder.Create;
  sb.Append(aString);
  sb.Replace('>', '>');
  sb.Replace('<', '<');
  Result := sb.ToString();
  FreeAndNil(sb);
  StopTimer;
end;

function TForm1.TestStringReplace(const aString: string): string;
begin
  StartTimer;
  Result := StringReplace(aString,'>','>',[rfReplaceAll]) ;
  Result := StringReplace(Result,'<','<',[rfReplaceAll]) ;
  StopTimer;
end;



2> Germán Estév..:

试试Peter Morris的FastStrings.pas.


快速字符串比普通的Delphi StringReplace函数更快速地跳跃.我真的希望彼得发布Delphi 2009的新版本.
请注意,FastString不是unicode,大多数是xml.

3> Roddy..:

你一定要看看Fastcode项目页面:http://fastcode.sourceforge.net/

他们对更快的StringReplace(Ansi StringReplace挑战)提出了挑战,并且'胜利者'比Delphi RTL快14倍.

Delphi本身的几个快速编码功能已包含在最新版本中(我认为是D2007),因此根据您使用的Delphi版本,性能改进可能会有很大差异.

如前所述,如果您真的想要处理XML,那么您应该真正关注基于Unicode的解决方案.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有