|
|
本帖最后由 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的效率这么低下呢?
这个命令耗时在什么地方? |
|