P prim Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-24 #1 S是一个字符串,请问Length(S) = 0和S=''那个更快?我原来以为Length(S)=0比较快, 但是做了一个测试,却发现Length(S) = 0比S=''慢很多。
B bbkxjy Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-24 #4 如果 s 是长字符串时,s = '' 更快,它只是比较 s 是否等于 nil。
白 白河愁 Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-24 #6 有结果了! 以如下程序为例子 var s:string; begin s:=''; if s='' then; if length(s)=0 then; end; 其中 if s='' then; cmp dword ptr [ebp-$04],$00 而 if length(s)=0 then; mov eax,[ebp-$04] call @lstrlen test eax,eax 还调用了一个CALL,所以很明显 s=''是比 length(s) 快的.
有结果了! 以如下程序为例子 var s:string; begin s:=''; if s='' then; if length(s)=0 then; end; 其中 if s='' then; cmp dword ptr [ebp-$04],$00 而 if length(s)=0 then; mov eax,[ebp-$04] call @lstrlen test eax,eax 还调用了一个CALL,所以很明显 s=''是比 length(s) 快的.
B beta Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-20 #16 //那么用S[1]:=#0应该更快 这样不安全,因为它不会修改 s 的储存长度(如果你了解其内部储存的话应该知道) 比如: s := 'abcde'; showmessage(inttostr(length(s))); s[2] := #0; showmessage(inttostr(length(s))); 你会发现两次都是 5,因此,还是用 s := '' 更好
//那么用S[1]:=#0应该更快 这样不安全,因为它不会修改 s 的储存长度(如果你了解其内部储存的话应该知道) 比如: s := 'abcde'; showmessage(inttostr(length(s))); s[2] := #0; showmessage(inttostr(length(s))); 你会发现两次都是 5,因此,还是用 s := '' 更好
Z zxb200 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-20 #17 應該是s=''快吧。 Length(s)=0,首先length()其目的 是為了求得所含字符的個數,比s=''多 執行了過程中的語句。
天 天真 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-20 #18 应该是s=''快,它只要判断s[1]是否等于空就行了,而length(s)它得求出怎个字符串的长度再比较
战 战鹰 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-20 #19 to beta, 俺只说这种方法比较快,并没有说安全啊!很多快速的方法就是通过牺牲安全性来实现的!
I iceheart Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-21 #20 s=''快,它只要判断s[1]是否等于空就行了 而length(s)它得求出怎个字符串的长度再比较 多一个过程哟……