汇编实现 一个处理字符串的功能,该如何解决
汇编实现 一个处理字符串的功能
一共两个功能。用现在的代码速度太慢了,请大侠帮忙用汇编实现一下,不甚感激。
=======================================================
第一个:
var
ss : String;
tLen : integer;
begin
ss := 'ab123cd';
tLen := length(ss);
if (tLen > 1) then begin
ss := copy(ss,tLen,1) + copy(ss,1,(tLen - 1));
end;
end;
运行结果是: dab123c
=======================================================
第二个:
var
ss : String;
tLen : integer;
begin
ss := 'ab123cd';
tLen := length(ss);
if (tLen > 1) then begin
ss := copy(ss,2,tLen) + copy(ss,1,1);
end;
end;
运行结果是: b123cda
========================================================
------解决方案--------------------
关注一下
帮你顶顶先
------解决方案--------------------
一共两个功能。用现在的代码速度太慢了,请大侠帮忙用汇编实现一下,不甚感激。
=======================================================
第一个:
var
ss : String;
tLen : integer;
begin
ss := 'ab123cd';
tLen := length(ss);
if (tLen > 1) then begin
ss := copy(ss,tLen,1) + copy(ss,1,(tLen - 1));
end;
end;
运行结果是: dab123c
=======================================================
第二个:
var
ss : String;
tLen : integer;
begin
ss := 'ab123cd';
tLen := length(ss);
if (tLen > 1) then begin
ss := copy(ss,2,tLen) + copy(ss,1,1);
end;
end;
运行结果是: b123cda
========================================================
------解决方案--------------------
关注一下
帮你顶顶先
------解决方案--------------------
- Delphi(Pascal) code
汇编实现肯定快,不过move内部实现也应该是汇编的了 试一试,看看速度如何: procedure moveleft(var s:string); var c:char; l:integer; begin l:=length(s); c:=s[1]; move(s[2],s[1],l-1); s[l]:=c; end; procedure moveright(var s:string); var c:char; l:integer; begin l:=length(s); c:=s[l]; move(s[1],s[2],l-1); s[1]:=c; end;
------解决方案--------------------
哈。。学习学习
------解决方案--------------------
赐教不敢当,不过4L的代码就很说明问题,字符串的时间通常是被浪费在"+",copy,replace等字符串函数的操作上,要知道这些操作都是在不断地生成新的字符串,想节约时间,申请一块内存,然后去操作他,move就是这么简单
------解决方案--------------------
学习了, 内存 move 比使用字符串函数要快这么多.
------解决方案--------------------
楼主,如果你想一味地追求速度,
请教别人的精力,还不如直接学习一下汇编就行了, 有了汇编基础,
移动字符串应该比较容易.