Какой самый быстрый способ получить размер каталога? Возможна ли многопоточность?
Как узнать размер всех файлов, находящихся внутри папки?
Размер каталога
Никакие другие вопросы о stackoverflow и других сайтах не упоминают многопоточность, но это должно быть возможно, например, если каталог содержит другие каталоги.
Другие решения на stackoverflow довольно медленные, даже медленнее, чем
Диалоговое окно «Папка Windows-> Свойства» даже при выпуске...
Перепробовал все решения по переполнению стека, и они либо не компилируются, либо очень медленные...
Например. du -h --max-depth=0 DIR_NAME
@user253751 user253751 как реализовать многопоточность?
@stacker как ты думаешь?
Возможно, вы захотите посмотреть на производительность в таких инструментах, как Windirstat, прежде чем пытаться писать код.
Whats the fastest way to get the size of a directory?
Под «размером каталога» я полагаю, вы имеете в виду совокупный размер файлов в каталоге и его потомках.
В общем, решение состоит в том, чтобы пройтись по дереву каталогов, получить размер каждого файла и накопить.
Не существует решения, которое было бы самым быстрым во всех случаях использования. Это всегда зависит от деталей.
Is multithreading possibile?
Безусловно. Однако трудно гарантировать, что вы получите лучшую производительность при многопоточности.
Проблема в том, что вычислительная стоимость операции тривиальна, а узким местом является чтение файловой системы. Если каждый поток ожидает запоминающее устройство, вы можете не получить никакого ускорения. На самом деле, если запоминающее устройство представляет собой вращающийся диск, параллельное чтение, скорее всего, будет намного медленнее.
если ОС не переупорядочивает параллельные чтения, чтобы найти самый быстрый маршрут по диску
... и предполагая, что ОС (включая драйверы/модули) не использует массово блокировки, такие как безумный гигантский замок. К сожалению, по состоянию на 2022 год это все еще довольно часто встречается на практике...
да, многопоточность возможна