Qokelate 发表于 2012-4-17 23:35:36

代码效率优化讨论 (是否可以作为集中贴讨论?)

本帖最后由 Qokelate 于 2012-4-17 23:55 编辑

1.
if $String then ____
if stringlen($string) then _____
if $string<>'' then _____
这个其实已经讨论过,本次收集只是为了集中处理   见 http://www.autoitx.com/thread-31448-1-1.html

2.
if not fileexists() then ________

if bitand(fileexists(),0) then _________

3.
;由字符串ab11cd 得到 ab66cd,假设11唯一
$string='ab11cd'
$NewString=stringreplace($string,'11','66')

$idx1 = StringInStr($string, '11', 0, 1)-1
$idx2 = StringInStr($string, '11', 0, -1)+1
$NewString = StringLeft($string, $idx1) & '66' & StringTrimLeft($string, $idx2)

本人无解,欢迎各抒己见,也欢迎提出你的优化讨论________          但请不要进行无关讨论,谢谢!!

pusofalse 发表于 2012-4-18 01:16:06

第2题,如果文件不存在,则。。。? 如果是这样,那应该改成:

if not fileexists() ...
if not bitand(fileexists(), -1) ...

任意数和0进行位“与”运算之后,总是等于0的。与-1进行位“与”运算,结果还是原数。很明显地直接if not fileexists()比较快一些。

第3题,直接stringreplace快,且不看这4个函数内部是怎样工作的,少了Au3解析器从“内核空间”切换到“用户空间”的过程。

Qokelate 发表于 2012-4-18 10:26:07

回复 2# pusofalse


    这个想错了,如果改成这样,会不会好点?

if not fileexists() ...
if bitand(fileexists()+1, 2) ...

pusofalse 发表于 2012-4-19 19:34:50

回复 3# Qokelate


    bitand(fileexists()+1, 2),文件存在时返回2,不存在时返回0,then... 后面的语句不会被执行的。
页: [1]
查看完整版本: 代码效率优化讨论 (是否可以作为集中贴讨论?)