Registriert seit: 8. Jan 2007
472 Beiträge
|
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
9. Mai 2023, 22:44
Mit mORMot Commit 5431 (c87fb80) funktioniert auch SaveToFile wie es soll:
Delphi-Quellcode:
procedure SaveFolderTo7Zip(const pmcFolder, pmcZipFileName: TFileName;
const pmcZipInternalDir: TFileName = ''; const pmcFileMask: TFileName = '*';
pmNewFile: Boolean = False; const pmOnProgress: T7zProgressCallback = Nil);
var
libWriter: I7zWriter;
begin
if not pmNewFile
and FileExists(pmcZipFileName) then
begin
libWriter := New7zWriter(pmcZipFileName, fh7z)
end
else
libWriter := New7zWriter(fh7z);
libWriter.SetCompressionLevel(3);
if Assigned(pmOnProgress) then
libWriter.SetProgressCallback(pmOnProgress);
libWriter.AddFiles(pmcFolder, pmcZipInternalDir, pmcFileMask, True);
libWriter.SaveToFile(pmcZipFileName);
end;
var
zipFileName: TFileName;
begin
zipFileName := MakePath([Executable.ProgramFilePath, 'TestMultiData.7z']);
var timer: TPrecisionTimer;
timer.Start;
SaveFolderTo7Zip('c:\mORMot2\src\', zipFileName, 'mORMot_2023-05-01', '*.pas;*.inc', {pmNewFile=}True);
SaveFolderTo7Zip('c:\mORMot2\src\', zipFileName, 'mORMot_2023-05-02', '*.pas;*.inc');
SaveFolderTo7Zip('c:\mORMot2\src\', zipFileName, 'mORMot_2023-05-03', '*.pas;*.inc');
SaveFolderTo7Zip('c:\mORMot2\src\', zipFileName, 'mORMot_2023-05-04', '*.pas;*.inc');
SaveFolderTo7Zip('c:\mORMot2\src\', zipFileName, 'mORMot_2023-05-05', '*.pas;*.inc');
ShowMessage(timer.Stop);
end;
Die Größe der gepackten Datei ist ca. 15MB. Das Packen mit Kompressionslevel 3 dauert kleiner 5 Sekunden. Es ist ein guter Kompromiss. Mit Level 5 schrumpft die Größe um ca. 18%, dafür dauert das Packen Faktor 3,5 länger.
Bis bald...
Thomas
Geändert von mytbo ( 9. Mai 2023 um 22:47 Uhr)
Grund: Benchmark-Werte hinzugefügt
|
|
Zitat
|