A mógłbyś jeszcze sprawdzić czasy CRC-32 i MD5?
CRC-32 - 34 sekundy;
MD5 - 45 sekund;
A dzięki. Myślałem że są szybsze.
Bardzo dużo zależy od wersji procka i nie biega tu o 32/64 bit ale wewnętrzna konstrukcja i pamięci podręczne.
@Wredzia Dobrze, rozumiem. 256 czy 512 u mnie w domu bez znaczenia i im wyższa cyferka tym komputer bardziej obciążony i trzeba więcej czasu na wyliczenie tych sum kontrolnych. Nie rozumiem tylko jednego - czego przykładowo taki znany stary algorytm MD5 mimo wszystko wolniej oblicza jednak sumy kontrolne z porównywanych plików aniżeli np. właśnie nawet taki SHA-3 512 ? Przecież MD5 jest już tak starym algorytmem, że na względnie nowym komputerze powinien się liczyć błyskawicznie, a tu proszę - u mnie to SHA-3 512 jest wyraźnie szybszy niż ten stary wszechobecny MD5, jak to wytłumaczyć ? Fakt, porównując pliki przy użyciu algorytmu MD5 korzystałem z programu MD5 Checksum Tool, a porównując pliki przy użyciu algorytmu SHA-3 512 korzystałem z programu PS Hash więc być może stąd ta różnica na niekorzyść starego MD5 względem SHA-3 512 ? Może PS Hash po prostu potrafi lepiej niż MD5 Checksum Tool wykorzystać dostępne zasoby sprzętowe kompa, np. wycisnąć więcej z wielordzeniowego proca, szybszego i większego RAM-u, szybszego dysku SSD, itd. ? Nie wiem który z tych programów jest starszy - MD5 Checksum Tool czy PS Hash ? MD5 Checksum Tool mam w wersji 4.3.0.0 (19 December 2017), a PS Hash mam w wersji 1.0 (2020.05.09). Widać zatem, że PS Hash w tej wersji którą posiadam jest nowszy o ok. niecałe 3 lata niż MD5 Checksum Tool w wersji którą posiadam. To może przynajmniej częściowo tłumaczyć dlaczego wyliczanie sum kontrolnych porównywanych plików staremu algorytmowi MD5 zajmuje więcej czasu niż nowemu i bardziej zaawansowanemu algorytmowi SHA-3 512. Jednakże, czy to tak do końca tłumaczy to ciekawe moim zdaniem zjawisko ? Moim skromnym zdaniem niespecjalnie, bo ja mam już nienajnowszego laptopa Lenovo ThinkPad W540 z 2014 roku w konfiguracji z procem Intel Core i7 4700mq (czyli stara już mikroarchitektura 4 generacji procesorów z serii Core, czyli Haswell, 6MB pamięci podręcznej L3, 4 rdzenie po 2.4 GHz, Turbo do 3.4 GHz, ale to Turbo akurat wyłączyłem, bo proc grzał się jak głupi mimo czystego układu chłodzenia i przy okazji przyczyniał się wyraźnie do przegrzewania się dedykowanej grafiki NVIDIA Quadro K2100m z 2 GB GDDR5 VRAM szczególnie podczas grania w bardziej wymagające gry typu GTA4, GTA5, itp. więc ten proc u mnie i tak finalnie pracuje cały czas na zegarze 2.4 GHz), 32 GB DDR3 1600 MHz RAM (4 x 8 GB DDR3 1600 MHz Samsung M471B1G73QH0-YK0), grafiką NVIDIA Quadro K2100m 2GB GDDR5 i dyskami SSD Crucial MX500 500GB (to mój główny dysk systemowy, zamontowany w głównym gnieździe SATA tego lapa), Crucial MX500 4TB (to dysk tylko na dane zamontowany w kieszeni na dysk SATA 2,5 cala zamontowanej zamiast napędu optycznego, chyba tzw. UltraBay) i Transcend TS2TMTS425S 2TB (to wprawdzie nie dysk systemowy, ale dysk użytkowy na którym instaluję m.in. różne programy, umieszczam bieżące dane użytkowe, itd. jeśli te nie zmieściłyby się na głównym dysku systemowym, po prostu jak brakuje mi miejsca na głównym dysku systemowym to instaluję właśnie na tym dysku różne programy i umieszczam na nim bieżące dane użytkowe, itp. , dysk ten zamontowany jest na złączu M.2 SATA, format 2242 obok karty WLAN). Wracając do tematu - z racji mojego nienajnowszego już laptopa który jest starszy niż oba te programy, czyli MD5 Checksum Tool w wersji którą posiadam i PS Hash w wersji którą posiadam wydaję się mało prawdopodobne aby ten starszy program, czyli MD5 Checksum Tool mimo wszystko nie potrafił w pełni wykorzystać mocy obliczeniowych mojego starego lapa. Zatem jeśli to nie wina przestarzałego programu który nie potrafi wykorzystać w pełni dostępnych mocy obliczeniowych lapa to jak to racjonalnie wytłumaczyć, że porównywanie plików poprzez wyliczanie ich sum kontrolnych starym znanym algorytmem MD5 zajmuje więcej czasu niż porównywanie plików poprzez wyliczanie ich sum kontrolnych nowym i bardziej zaawansowanym algorytmem SHA-3 512 ? Ciekaw jestem Twojej odpowiedzi na ten temat.
EDIT: O, widzę, że zamieściłeś też testy z czasami wyliczania sum kontrolnych plików za pomocą algorytmów CRC-32 oraz właśnie MD5 na życzenie kolegi @sensu i widzę, że zarówno stary CRC-32 jak i stary MD5 jest wolniejszy niż nowszy SHA-512 mimo, że stary CRC-32 i stary MD5 powinny być mniej zasobożerne dla kompa niż nowszy SHA-512, chociaż istotnie - widać, że najnowszy SHA3-512 jest już rzeczywiście dużo wolniejszy od reszty tych algorytmów które tu podałeś, czyli CRC-32, MD5, SHA-256 oraz SHA-512.
Dla mnie to też zagadka, bo mam tu na szybko skrypt w pythonie i wraz SHA 512 jest szybszy
MD5: 0.0227 s
SHA-512: 0.0215 s
A mój i5-9400F nie ma SHA-NI** → nie przyspiesza SHA-512 sprzętowo.
Tu jak ktoś chce się pobawić, copy/paste i pamiętać podać realną ścieżkę do pliku pomiarowego (linia 19)
import hashlib
import time
def benchmark_hash(file_path, algorithm, block_size=65536):
start_time = time.time()
hash_func = hashlib.new(algorithm)
with open(file_path, 'rb') as f:
while True:
data = f.read(block_size)
if not data:
break
hash_func.update(data)
hash_func.hexdigest() # Finalizacja obliczeń
return time.time() - start_time
# Przykładowe użycie
file = "test_file.bin" # Zmień na rzeczywistą ścieżkę
try:
print(f"MD5: {benchmark_hash(file, 'md5'):.4f} s")
print(f"SHA-512: {benchmark_hash(file, 'sha512'):.4f} s")
except FileNotFoundError:
print(f"Błąd: Plik '{file}' nie istnieje!")
except ValueError as e:
print(f"Błąd algorytmu: {e}")
Tu widać, 1 na 3 gdzie MD5 jest szybszy:
No i na koniec jeszcze jedno pytanie - w wierszu poleceń (cmd.exe) są tak naprawdę chyba dwie komendy do porównywania plików, bo jedna to już wspomniana przeze mnie fc /b file1 file2, ale jest też komenda comp file1 file2, czym te dwie komendy się różnią od siebie ? W sensie oczywiście poza nazwą, m.in. w sensie działania ?
Dawno temu w odległej galaktyce…
comp
- zabytek z czasów CP-M - prosty, że aż prosty…;
fc
- zabytek z czasów pierwszego MS-DOS - zaczęli dodawać zaawansowane opcje itp;
Dziś
PowerShell i elastyczne cmdlety do porównywania plików;
comp
i fc
są utrzymywane tylko dla kompatybilności. Microsoft nie wypowiada się na temat ich dalszego losu.
@Wredzia To tak bardziej historycznie się wypowiedziałeś odnośnie tych komend. Mnie raczej bardziej zastanawia różnica w działaniu między nimi, tzn. która komenda porównuje pliki według jakiego wzorca lub algorytmu oraz to która z nich porównuje pliki lepiej/dokładniej/precyzyjniej. Komenda comp file1 file2 chyba nie oferuje porównania binarnego plików w przeciwieństwie do komendy fc /b file1 file2, dobrze myślę. Oczywiście można też użyć komendy fc file1 file2 bez opcji /b (porównania binarnego plików) - pytanie tylko co ta komenda wtedy właściwie robi podczas porównywania plików jeśli użyjemy jej właśnie bez tego przełącznika /b ? Bo skoro nie porównuje ona wówczas plików binarnie to w jaki inny sposób to robi ? To samo pytanie dotyczy oczywiście także komendy comp file1 file2 - co ona właściwie robi podczas porównywania plików ? Bo domyślam się, że nie porównuje ona plików binarnie więc w jaki inny sposób ona to robi ? No i pytanie co jest lepsze/dokładniejsze/bardziej precyzyjne jeśli chodzi o porównywanie plików - porównanie binarne plików czy jakieś inne, jak np. to za pomocą komendy fc file1 file2 bez przełącznika /b (porównania binarnego plików) lub to za pomocą komendy comp file1 file2 ? A jeśli chodzi o PowerShell to jakie są te komendy w nim do porównywania plików ? No i przy okazji spytam od razu na zaś - co te komendy w PowerShell właściwie robią podczas porównywania plików, według jakiego wzorca lub algorytmu porównują one pliki i czy są lepsze od porównania binarnego plików takiego jak za pomocą komendy fc /b file1 file2 ?
Próbowałem też tego programu Double Commander o którym wspomniałeś wcześniej - rzeczywiście masz rację, że jest dosyć podobny do starego, poczciwego, dobrego i kultowego już Total Commandera. Prawie, że „kopiuj wklej” Total Commander i do tego chyba na darmowej licencji w przeciwieństwie do Total Commandera. Do tego dostępny także na inne platformy jak Linux i MacOS czego o Total Commanderze chyba powiedzieć nie można jak dobrze pamiętam. Innymi słowy dobry program, dobrze go posiadać i dobrze wiedzieć, że coś takiego jest dostępne.
To o co pytasz wykracza poza czas jaki mogę poświęcić tutaj. Najprościej dowiesz się tego czytając w necie o tych komendach, napisano naprawdę wiele.
Jeśli nie masz chęci to zawsze możesz zadawać takie pytania dla pseudo AI typu ChatGPT, Claude, Gemini, DeepSeek.
@Wredzia O, czyżby kolega się obraził na mnie ? No nic, trudno - może sam jakoś znajdę interesujące mnie informacje o tych komendach. Zresztą ja nikogo tu nie zmuszam i nie poganiam (i nawet nie zamierzam) żeby mi zaraz wszystko ładnie napisał i wytłumaczył. To nie musi być jak w korporacjach, czyli „na wczoraj” jak się może koledze wydaje - jak będziesz miał trochę wolnego czasu i by Ci się ewentualnie bardzo nudziło to zawsze możesz z nudów tu napisać parę zdań na ten interesujący mnie temat tych komend, a na razie cóż, chyba to wszystko i bez nerwów. Dobranoc.
Nie widzę, żeby się obraził. Poświęcił tyle czasu ile chciał czy mógł, a wcale nie musiał.
Ja Ci raczej nie pomogę, bo moja wiedza na ten temat jest zbyt mała. Kiedyś wybierałem dla siebie CRC-32, MD5, SHA-1, bo działały w miarę szybko, a interesowała mnie tylko weryfikacja plików bez wnikania w kwestie bezpieczeństwa. Trwało to kilka lat i zawsze było wszystko dobrze, aż w końcu przestałem ich używać i zacząłem wykonywać kopię bez weryfikacji. Kopię robiłem na zmianę na 2 zewnętrzne HDD, więc nie musiałem się później martwić o retencję danych.
@sensu Próbowałem w tym PowerShell komend Compare-Object z (z komendą Get-Content wpierw) i Compare-File. Komenda Compare-File w ogóle mi nie działa, a komenda Compare-Object z wpierw użytą komendą Get-Content niby działa, ale chcąc na serio codziennie z niej korzystać nie dowiedziałbym się o porównywanych przeze mnie plikach za wiele, a właściwie to nic - no chyba, że ja coś źle robię, ale popróbowałem trochę metodą prób i błędów i w końcu nie wywalało mi błędów, że coś źle wpisałem więc chyba dobrze to powpisywałem w tym PowerShellu. Jednak jak powiedziałem - rezultat tego jest taki sobie. Popróbuję jeszcze, ale powoli zaczynam „mieć doła” od tego.
Codziennie chcesz to robić? Ile tych danych ma być?
Może wystarczy Ci jakiś program typu QuickHash i zakładka „compare two folders”?
@sensu Około 1,3 TB w tej chwili - mowa o rozmiarze pojedynczej kopii danych jaka znajduje się na każdym z dysków. Najchętniej to nie robiłbym tego wcale, ale „licho nie śpi” - cały czas jakieś tam większe lub mniejsze dane się wgrywa na te dyski i nigdy nie wiesz kiedy coś pójdzie nie tak. Przykładowo zdarzało mi się nieraz, że dysk zewnętrzny nie chciał się bezpiecznie wysunąć za pierwszym razem za pomocą tej ikonki „Bezpieczne usuwania sprzętu i wysuwanie nośników” w prawym dolnym rogu - wprawdzie za drugim razem już się wysuwał, ale ilekroć mi się to zdarzało (niechcący się bezpiecznie wysunąć za pierwszym razem za pomocą wspomnianej ikonki dysk zewnętrzny) to miałem poważne obawy o to czy dane na tym dysku są dalej całe i zdrowe. Wprawdzie jest jeszcze kopia danych na dysku wewnętrznym, ale w tym przypadku także nieraz drżałem z obawy o to czy dane na nim są całe i zdrowe, bo zdarzało się też nieraz, że ten dysk potrafił „ot tak” zniknąć z systemu tak jakby go w ogóle nie było w lapie, a działo się to często jak laptop przeszedł w stan uśpienia lub hibernacji i gdy go „wybudziłem” dysk był już nie widoczny w systemie choć przecież nie wysuwałem go za pomocą wspomnianej ikonki ani w żaden inny sposób więc de fakto dysk wysuwał się „na żywca” i stąd mój niepokój. Skoro nie wydałem systemowi jasnego polecenia, że ma wysunąć ten dysk to jakim cudem on się sam wysunął po uśpieniu/hibernacji ? Można oczywiście winę zwalić na oszczędzanie energii, ale to akurat raczej odpada w moim przypadku, bo w „Zmień ustawienia planu” w „Opcjach zasilania” w „System i zabezpieczenia” w „Panelu sterowania” ustawiłem parametr „Przełącz komputer w tryb uśpienia” na „Nigdy” zarówno dla zasilania z baterii jak i zasilacza. Poza tym będąc już tam wszedłem potem jeszcze dodatkowo w „Zmień zaawansowane ustawienia zasilania”, a następnie:
- Kolejno w „Dysk twardy”, „Wyłącz dysk twardy po” i ustawiłem na „Nigdy” dla „Zasilania bateryjnego” i „Podłączony”.
- Kolejno w „Uśpienie”, „Uśpij po” i ustawiłem na „Nigdy” dla „Zasilania bateryjnego” i „Podłączony”
- Kolejno w „Uśpienie”, „Zezwalaj na stan uśpienia hybrydowego” i ustawiłem na „Nigdy” dla „Zasilania bateryjnego” i „Podłączony”
- Kolejno w „Uśpienie”, „Hibernacja po” i ustawiłem na „Nigdy” dla „Zasilania bateryjnego” i „Podłączony”
- Kolejno w „Ustawienia USB”, „Ustawienie wstrzymania selektywnego USB” i ustawiłem na „Wyłączone” dla „Zasilania bateryjnego” i „Podłączony”
- Kolejno w „Ustawienia multimedialne”, „Podczas udostępniania multimediów” i ustawiłem na „Zapobiegaj przechodzeniu komputera w stan uśpienia po okresie nieaktywności”
- Kolejno w „Bateria”, „Akcja dla niskiego poziomu energii baterii” i ustawiłem na „Nic nie rób” dla „Zasilania bateryjnego” i „Podłączony”
- Kolejno w „Bateria”, „Akcja dla krytycznego poziomu energii baterii” i tu chyba może być problem, bo jest ustawione na „Hibernacja” dla „Zasilania bateryjnego” i „Podłączony”, tyle że dla „Zasilania bateryjnego” i tak nie da się ustawić na „Nic nie rób” jak w przypadku „Akcji dla niskiego poziomu energii baterii”, a jedynie można ustawić ten parametr jeszcze na „Uśpij” albo „Zamknij”, ale to jest w sumie logiczne, bo jak bateria rozładuje się do krytycznego poziomu, a nie podłączy się ładowarki/zasilacza do lapa na czas to co z drugiej strony patrząc ma w takiej sytuacji zrobić system ? Wyłączyć się nagle „na żywca”, bo nagle zabrakło mocy ? To tak samo jakby nacisnąć lub przytrzymać chwilę (to już w zależności od modelu kompa/lapa) przycisk zasilania przy otwartym i pracującym systemie albo wyciągnąć nagle wtyczkę z gniazdka, zasilacza/ładowarki (dotyczy tylko laptopa) lub laptopa (przy całkowicie rozładowanej baterii, bo przy jakimkolwiek poziomie naładowania baterii nic by się pewnie nie stało)/kompa też przy otwartym i pracującym systemie. Raczej nikt tego nie chce.
W BIOS’ie/UEFI też raczej ustawienia odnośnie oszczędzania energii są poustawiane tak żeby dyski same się nie wyłączały, ale to jeszcze sprawdzę dla pewności o ile tam są w ogóle takie ustawienia, bo ja sobie jakoś tego nie przypominam (choć fakt, mogę też i tego nie pamiętać, bo już dawno nie wchodziłem do BIOS’u/UEFI). Rożne oczywiście ustawienia tam są, ale tego akurat chyba tam nie ma. No nic, sprawdzę. Może to chodzi o jakieś te ustawienia z tym tzw. „UltraBay”, bo ten wewnętrzny dysk tylko na dane mam zamontowany w kieszeni na dysk SATA 2,5 cala zamontowanej zamiast napędu optycznego, ale być może BIOS/UEFI dalej to traktuje/widzi jak napęd optyczny i włącza przez to jakieś oszczędzanie energii wyłączając ten niby „napęd optyczny”, a w rzeczywistości ten wewnętrzny dysk na dane. Tak, to zdecydowanie może być to, bo - link poniżej do tego o co chodzi z tym UltraBay.
Szczególnie, że dziwnym trafem główny dysk systemowy zamontowany w głównym/domyślnym gnieździe SATA tego lapa jakoś, póki co przynajmniej sam się nie wyłącza, nawet po uśpieniu lub hibernacji, a nastepnie ponownym „wybudzeniu” tego laptopa. Tak samo ten dysk użytkowy M.2 SATA w formacie 2242 zamontowany na złączu M.2 SATA obok karty WLAN też jakoś, póki co przynajmniej sam się nie wyłącza po uśpieniu lub hibernacji, a następnie ponownym „wybudzeniu” tego laptopa. To rzeczywiście może być jakiś trop w tej sprawie. No chyba jeszcze, że to wina samej tej zamontowanej zamiast napędu optycznego kieszeni na dysk SATA 2,5 cala w której ten dysk jest zamontowany, nie wiem. Choć wcześniej używałem innej takiej zamontowanej zamiast napędu optycznego kieszeni na dysk SATA 2,5 cala w której ten dysk też był zamontowany i było to samo więc chyba musiałby być rzeczywiście pech żeby z dwoma takimi kieszeniami pod rząd było coś nie tak.