Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Abbiamo provato Motorola razr fold, il pieghevole a libro con display interno LTPO da 8,09 pollici, Snapdragon 8 Gen 5 e batteria da 6000 mAh in 243 grammi. Pennino e custodia sopno già nella confezione, per un foldable che si caratterizza per il pannello luminoso, l'autonomia ottima per la categoria e le fotocamere coerenti e ben sfruttabili. Il listino è di 1999 euro, ma in vendita si trova già a molto meno
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Google Pixel Watch 5 ha affinato una formula già convincente con hardware più veloce, Gemini offline e nuovi strumenti per sport e benessere. Abbiamo provato la versione LTE da 41 mm, comoda anche di notte e ben proporzionata sui polsi piccoli. Il design resta un punto di forza, ma l'autonomia premia ancora il 45 mm e alcune funzioni AI non sono disponibili in Italia: ecco che cosa cambia rispetto a Watch 4 e quale formato conviene scegliere oggi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-11-2009, 08:21   #1
alex783
Senior Member
 
Iscritto dal: Jan 2009
Messaggi: 609
[C#] Sincronizzare il contenuto di una cartella con quello di un archivio ZIP

Ciao a tutti!
Ieri sera ho scritto una classe per realizzare il backup incrementale di una cartella in formato ZIP (utilizzando l'ottimo DotNetZip di Dino Chiesa ( )), solo che sono rimasto abbastanza deluso dalle prestazioni di ciò che ho fatto.

In particolare, usando la cartella del profilo di Thunderbird come test (la mia "pesa" circa 650MB e contiene circa 6500 files e poco più di 80 cartelle totali), il primo backup completo (del peso finale di 340MB) è realizzato in 3 minuti e 23 secondi (e questo dimostra la bontà della libreria DotNetZip, con prestazioni paragonabili ai più noti ZIP engine), mentre i backup successivi, quindi del tipo incrementale, sono completati in circa 2 minuti e 35 secondi per un peso di circa 160MB ciascuno (questo perché basta ricevere solo un'email e Thuderbird modifica il file Inbox del relativo account e quindi va segnato per il backup (in genere è un file piuttosto grande).

Bene. Mi sono accorto che durante i backup incrementali, la mia classe perde ben 1 minuto e 17 secondi per determinare (attraverso un ciclo foreach) quali sono i file da includere nel nuovo file ZIP. Ed è qui che, secondo me, perde davvero troppo tempo.

Ecco il mio codice, che poi non è nulla di che, ovviamente.

Codice:
using (ZipFile NewZip = new ZipFile())
{
ZipFile OldZip = ZipFile.Read(nameOfZipFile) NewZip.UseZip64WhenSaving = Zip64Option.AsNecessary; NewZip.CompressionLevel = CompressionLevel.Level2; NewZip.UseUnicodeAsNecessary = true; foreach (FileInfo currentFileOnDisk in FileList) {
ZipEntry candidateZipEntry = OldZip[currentFileOnDisk.FullName.Replace(mailclientsClass.thunderbirdProfilePath, "ThunderbirdProfile")]; if (candidateZipEntry != null && currentFileOnDisk.LastWriteTimeUtc > candidateZipEntry.ModifiedTime) NewZip.AddFile(currentFileOnDisk.FullName, Path.GetDirectoryName(currentFileOnDisk.FullName.Replace(mailclientsClass.thunderbirdProfilePath, "ThunderbirdProfile"))); else if (candidateZipEntry == null) NewZip.AddFile(currentFileOnDisk.FullName, Path.GetDirectoryName(currentFileOnDisk.FullName.Replace(mailclientsClass.thunderbirdProfilePath, "ThunderbirdProfile")));
} NewZip.Save(nameOfZipFile+incrementalCounter.ToString());
}
Secondo voi sbaglio qualcosa? come si potrebbe fare di meglio?

P.S: la classe non è ovviamente completa, manca in particolare il controllo di eventuali file eliminati nella cartella origine, che dovrei realizzare con un altro ciclo foreach, e quindi immagino che perderà un altro minuto per il controllo
__________________
L'iPad? Potrebbe esserci gente che, pur d'avere il nuovo gadget, si mette a leggere i libri. Questa sì sarebbe una rivoluzione (Beppe Severgnini)
alex783 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2009, 07:41   #2
alex783
Senior Member
 
Iscritto dal: Jan 2009
Messaggi: 609
ehm... nessuno?
__________________
L'iPad? Potrebbe esserci gente che, pur d'avere il nuovo gadget, si mette a leggere i libri. Questa sì sarebbe una rivoluzione (Beppe Severgnini)
alex783 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2009, 10:48   #3
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Potrei dire una cavolata, ma potresti eseguire l'operazione qui sotto solo una volta, invece che ripeterla 2 volte:
- durante l'assegnazione iniziale di ZipEntry;
- nel ramo di esecuzione scelto.
Codice:
currentFileOnDisk.FullName.Replace(mailclientsClass.thunderbirdProfilePath, "ThunderbirdProfile")
poi potresti scrivere la condizione dell'if così:
Codice:
foreach (FileInfo currentFileOnDisk in FileList)
{
    String fileName = currentFileOnDisk.FullName.Replace(mailclientsClass.thunderbirdProfilePath, "ThunderbirdProfile");
    ZipEntry candidateZipEntry = OldZip[fileName];

    if (candidateZipEntry == null || currentFileOnDisk.LastWriteTimeUtc > candidateZipEntry.ModifiedTime) 
        NewZip.AddFile(currentFileOnDisk.FullName, Path.GetDirectoryName(fileName));
}
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 03-11-2009 alle 11:30.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2009, 14:47   #4
theking0
Member
 
L'Avatar di theking0
 
Iscritto dal: Jul 2007
Messaggi: 45
La migliore lib per il formatto zip è SharpZipLib.

Prova con quella.
theking0 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2009, 17:07   #5
alex783
Senior Member
 
Iscritto dal: Jan 2009
Messaggi: 609
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Potrei dire una cavolata, ma potresti eseguire l'operazione qui sotto solo una volta, invece che ripeterla 2 volte:
- durante l'assegnazione iniziale di ZipEntry;
- nel ramo di esecuzione scelto.
Codice:
currentFileOnDisk.FullName.Replace(mailclientsClass.thunderbirdProfilePath, "ThunderbirdProfile")
poi potresti scrivere la condizione dell'if così:
Codice:
foreach (FileInfo currentFileOnDisk in FileList)
{
    String fileName = currentFileOnDisk.FullName.Replace(mailclientsClass.thunderbirdProfilePath, "ThunderbirdProfile");
    ZipEntry candidateZipEntry = OldZip[fileName];

    if (candidateZipEntry == null || currentFileOnDisk.LastWriteTimeUtc > candidateZipEntry.ModifiedTime) 
        NewZip.AddFile(currentFileOnDisk.FullName, Path.GetDirectoryName(fileName));
}
Sì, in effetti la condizione di "if" è meglio come hai detto tu.
Thanks!

Quote:
Originariamente inviato da theking0 Guarda i messaggi
La migliore lib per il formatto zip è SharpZipLib.

Prova con quella.
Uhm, perché è meglio? DotNetZip è un progetto in continuo sviluppo, il manteiner rilascia nuove versione molto frequentemente e la documentazione è ottima.

Inoltre, la versione 1.9 promette grandi passi avanti nelle prestazioni (che già sono assai decorose, comunque) con la compressione e decompressione in parallelo ( http://dotnetzip.codeplex.com/WorkIt...orkItemId=5183 )
__________________
L'iPad? Potrebbe esserci gente che, pur d'avere il nuovo gadget, si mette a leggere i libri. Questa sì sarebbe una rivoluzione (Beppe Severgnini)
alex783 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2009, 09:46   #6
alex783
Senior Member
 
Iscritto dal: Jan 2009
Messaggi: 609
Dino Chiesa ha rilasciato una nuova release della versione beta di DotNetZip (la 1.9.0.29).

Dire "eccezionale" sarebbe riduttivo

Con la compressione in parallelo e il BufferSize impostato a 131072 (ovvero 128KB), il mio programma ha ridotto i tempi di compressione di circa l'80%.

Per comprimere la stessa cartella del profilo di Thunderbird, ora impiega appena 1 minuto e 52 secondi (con la vecchia versione della libreria, e senza il BufferSize impostato a 128KB, impiegava circa 3 minuti e 23 secondi).

E devo ancora provare gli altri consigli che mi ha dato!

Provatela anche voi! http://dotnetzip.codeplex.com/Releas...eleaseId=27890
__________________
L'iPad? Potrebbe esserci gente che, pur d'avere il nuovo gadget, si mette a leggere i libri. Questa sì sarebbe una rivoluzione (Beppe Severgnini)
alex783 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2009, 09:49   #7
alex783
Senior Member
 
Iscritto dal: Jan 2009
Messaggi: 609
Inoltre, stavo pensando anche di impiegare un db come SQLite per creare un catalogo che tenga traccia degli ultimi file modificati, così non ho bisogno di controllare ogni file ZIP. Non vedo l'ora di provare tutte queste modifiche...
__________________
L'iPad? Potrebbe esserci gente che, pur d'avere il nuovo gadget, si mette a leggere i libri. Questa sì sarebbe una rivoluzione (Beppe Severgnini)
alex783 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi In sella alla Fiido Nomads Pro: e-bike con motor...
Spendereste 5.899 dollari per un Walkman...
SEGA ritira Total War: Shogun 2 - Comple...
Switch off 3G di WINDTRE: ok dall'AGCOM ...
Claude, Accenture taglia il budget ai di...
Beats e Pokémon annunciano l'ediz...
Ninja CRISPi a 99,99€ su Amazon: -44% su...
Cuffie JVC a meno di 30€ su Amazon: 50 o...
LibreOffice offre supporto gratuito per ...
Router Wi-Fi con slot SIM a 36,99€: Merc...
La One UI con Android 17 arriva su nuovi...
Amazon ti ascolta ovunque: ecco i due ga...
I nuovi MacBook con display OLED sono pr...
JBL, cuffie con ANC e fino a 80 ore da 8...
Tesla Roadster, l'auto elettrica di Musk...
Windows 11 più veloce e meno affa...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:58.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v