Производительность кода при добавлении даты проверки входного файла - PullRequest
0 голосов
/ 30 мая 2019

Время выполнения кода увеличивается с 5 минут до более часа со следующим изменением:

С:

If objFSO.FileExists(inputFile) then

До:

If FormatDateTime(objFile.DateLastModified,vbShortDate) = FormatDateTime(Date,vbShortDate) Then

Iпопытался оставить начальную проверку только в том случае, если файл существует, и переместить проверку даты входного файла внизу кода.

Это не улучшило время выполнения

Dim arrName Dim arrFieldsDim strName

Dim inputFile : inputFile = "\\dgdgdgd\xyx.csv"
Dim newInputFile : newInputFile = "xyx_NEW.csv"
Dim fileLocation : fileLocation = "....csv"
Dim inputgz: inputgz = "...xyx.csv.gz"
Dim archivegz: archivegz ="...xyx.csv."& Year(date) & Month(date) & 
Day(date)&".gz"
Dim wLine : wLine = ""
Dim numLine : numLine = 0


Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
set objFile=objFso.GetFile(inputFile)
If FormatDateTime(objFile.DateLastModified,vbShortDate) = 
FormatDateTime(Date,vbShortDate) Then

'No date check
'If objFSO.FileExists(inputFile) then
        objFile.Copy newInputFile
    Set objRead = objFSO.OpenTextFile(newInputFile, ForReading)
    Set objWrite = objFSO.CreateTextFile(fileLocation)
else
writeToLog("ERROR: File is not current (" & inputFile & ")")
objFso.DeleteFile(inputFile)
wscript.quit
End If


strLine = objRead.ReadLine
objWrite.WriteLine(strLine)

writeToLog("Read Input file and find records that match XYZ in 14, 17 and 18 fields")

Do Until objRead.AtEndOfStream

strLine = objRead.ReadLine
objWrite.WriteLine(strLine)
Do Until objRead.AtEndOfStream
strLine = objRead.ReadLine
arrFields = Split(strLine, vbTab)
IF instr(arrFields(14),"XYZ") > 0 OR instr(arrFields(17),"XYZ") > 0 OR 
instr(arrFields(18),"XYZ") > 0 THEN
objWrite.WriteLine(strLine)
END IF


Loop

objRead.Close()
objWrite.Close()

Sub writeToLog(theString)
    wscript.echo(Date & " - " & Time & " - " & theString)
End Sub

В идеале ожидаемое время выполнения должно быть не более 10 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...