本帖最后由 love5173 于 2011-4-20 23:08 编辑
相关帖子http://www.autoitx.com/forum.php ... p;extra=&page=1
3M的代码#include <File.au3>
$aFile = FileOpenDialog("快速删除重复行",@ScriptDir&"","文本文件 (*.txt)", 1 + 4)
If @error Then
MsgBox(0,0,"文件未选择",3)
Exit
EndIf
$begin = TimerInit()
Local $str='',$file_array
_FileReadToArray($aFile,$file_array)
;_ArrayDisplay($file_array)
For $i = 1 To UBound($file_array)-1
$temp=$file_array[$i]
If Not IsDeclared($temp) Then
Assign($temp, $i)
$str&=$temp&@CRLF
EndIf
Next
$dif = TimerDiff($begin)
$out_file=StringTrimRight($aFile,4)&'_已完成.txt'
if FileExists($out_file) then FileDelete($out_file)
FileWrite($out_file,$str)
ShellExecute($out_file)
WinWaitActive("[CLASS:Notepad]")
WinSetTitle("[CLASS:Notepad]", "", '处理'&UBound($file_array)&'行'&' 用时'&int($dif)&'毫秒')
Exit
我修改的#include <File.au3>
$aFile = FileOpenDialog("快速删除重复行",@ScriptDir&"","文本文件 (*.txt)", 1 + 4)
If @error Then
MsgBox(0,0,"文件未选择",3)
Exit
EndIf
$begin = TimerInit()
Local $str='',$file_array
_FileReadToArray($aFile,$file_array)
;_ArrayDisplay($file_array)
For $i = 1 To UBound($file_array)-1
;$temp=$file_array[$i]
If Not StringInStr($str,$file_array[$i],1) Then
; Assign($temp, $i)
$str&=$file_array[$i]&@CRLF
EndIf
Next
$dif = TimerDiff($begin)
$out_file=StringTrimRight($aFile,4)&'_已完成.txt'
if FileExists($out_file) then FileDelete($out_file)
FileWrite($out_file,$str)
ShellExecute($out_file)
WinWaitActive("[CLASS:Notepad]")
WinSetTitle("[CLASS:Notepad]", "", '处理'&UBound($file_array)&'行'&' 用时'&int($dif)&'毫秒')
Exit
我只是想知道为什么StringInStr的效率这么低下呢?
这个命令耗时在什么地方? |