Столкнулся с проблемкой...
В папке находится около 3000 архивов...
В каждом архиве находится около 100 файлов.... - они периодически добавляются - убавляются...
Мне нужно периодически подсчитывать общее кол-во файлов во всех архивах...
Реализовал след. алгоритм:
проблема в том что процесс подсчета занимает продолжительное время...
Как можно улучшить алгоритм , чтобы ускорить процесс...
- как вариант подумал отслеживать только изменившиеся архивы и пересчитывать файлы только в них... но опять же - возникает вопрос как это делать... - поиск по массиву затем сравнение СРС? или даты изменения?, или размера? что быстрее???
В папке находится около 3000 архивов...
В каждом архиве находится около 100 файлов.... - они периодически добавляются - убавляются...
Мне нужно периодически подсчитывать общее кол-во файлов во всех архивах...
Реализовал след. алгоритм:
Код:
#Include <7Zip.au3>
#include <file.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Подсчет документов", 507, 70, 192, 124)
$Progress1 = GUICtrlCreateProgress(8, 32, 489, 9)
$Label1 = GUICtrlCreateLabel("Кол-во доков", 8, 8, 36, 17)
$Button1 = GUICtrlCreateButton('Go', 8, 45, 30, 17)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$DirUpd = FileSelectFolder('Выбери папку с архивами', "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")
If @error Then
MsgBox(4096,"Error","Директория не выбрана!")
Else
FileChangeDir($DirUpd)
$search = FileFindFirstFile("*.zip")
$nCount = 0
$PosPogr = 0
$DPos = 100/3992
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
$nFile = _7ZipGetFileCount($DirUpd & '\' & $file)
$nCount = $nCount + $nFile
GUICtrlSetData ($Label1, "В архиве файлов: " & $nCount)
$PosPogr = $PosPogr+$DPos
GUICtrlSetData ($Progress1, $PosPogr)
WEnd
FileClose($search)
MsgBox(4096, "Damp:", 'В архиве файлов: '& $nCount)
EndIf
EndSwitch
WEnd
проблема в том что процесс подсчета занимает продолжительное время...
Как можно улучшить алгоритм , чтобы ускорить процесс...
- как вариант подумал отслеживать только изменившиеся архивы и пересчитывать файлы только в них... но опять же - возникает вопрос как это делать... - поиск по массиву затем сравнение СРС? или даты изменения?, или размера? что быстрее???