TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #263 · 28 јун.

В прошлом примере мы добились совпадения хеш-суммы двух архивов. Но не даёт покоя тот факт, что делается это слишком долго. Давайте сравним скорость. >>> from timeit import timeit >>> timeit("hashlib.md5( open('archive1.tar.gz', 'rb').read() ).hexdigest()", number=100, globals=globals()) # 8.6 >>> timeit("get_hash_tar1('archive1.tar.gz')", number=100, globals=globals()) # 29.8 Разница больше чем в 3 раза! Видимо потому, что кроме простого чтения байтиков мы еще применяем алгоритм разжатия данных? Кажется что для 100 итераций это время нормальное, но представьте что архив будет размером не 50 Мб а 10Гб. Время возрастёт серьезно! Попробуем сократить разрыв. Давайте считать не все данные а только хеш файлов, который посчитает сам модуль tarfile. def get_hash_tar2(path): hsum = hashlib.md5() with tarfile.open(path) as tar: for file in tar.getmembers(): hsum.update(file.chksum.to_bytes(8, byteorder='big')) return hsum.hexdigest() >>> timeit.timeit("get_hash_tar2('archive1.tar.gz')", number=100, globals=globals()) 11.5 Прирост скорости x3! Уже неплохо, почти как просчет хеша для архива без разжатия. Почему так, можно почитать в комментарии. Если коротко, мы считываем только заголовки элементов архива. Но на сколько я понял, это не отменяет чтение всего буфера из архива. А можно быстрей? Можно... #libs#tricks

Hashtags

Резултати

Пронајдени 0 слични објави

Пребарај: #libs

当前筛选 #libs清除筛选

Не се пронајдени слични објави.

Оваа објава нема претходно пресметани резултати на сличност.