Pathoswithin wrote:с одной операцией на 400 МБ справляются за 5 секунд
Не 5 секунд, а примерно 1 минута. И не 400 Mb, а, как видно на скриншоте, 241 Mb
viewtopic.php?f=31&t=659&start=225#p68027
Если говорить про
viewtopic.php?f=31&t=659&start=225#p68028
то получается, что для KFM потребовалось 256 Mb(четверть ОЗУ), в то время как для fNav только 256 Kb. При этом KFM справился менее чем на 15% быстрее, запросив для этого в 1024(
!!!) раз больше памяти. Также, KFM зависал на время копирования.
Pathoswithin wrote:Проверь скорость копирования на жёстком диске под виндой.
Сделал некоторые замеры ради интереса.
Копировался тот же самый файл 1,36 ГБ (1 465 528 320 байт), находящийся на HD FAT32.
При копировании на USB флешку NTFS через explorer это заняло примерно 3,5 минуты.
При копировании через TotalCommander на USB флешку NTFS в режиме "use big file copy mode" буфер 64 K — чуть более 4 минут.
При копировании с помощью fNav из-под KlbrInWin на тот же самый диск(но на другой раздел NTFS ) — примерно 1,5 минуты.
При копировании с помощью KFM из-под KlbrInWin на тот же самый диск(но на другой раздел NTFS ) — 01:20.
Лично для меня это мало что прояснило. Попробую ещё разные варианты размера буфера во fNav на реальной системе. Возможно, будет смысл увеличить его в пределах 2..8 Mb(я в то же время не хочу, чтобы пользователь замечал подвисание во время копирования).
Pathoswithin wrote:Если сделать работу с файлами в отдельном потоке, не будет зависать.
А вот если добавить не один, а два дополнительных потока, то, возможно, смысл есть. Один поток непосредственно копирует и сам он вполне может подвисать(это не будет заметно, он окна не имеет), второй поток имеет окно и отображает прогресс, его окно всегда будет реагировать на действия пользователя. Общаться они также могут с помощью IPC. Просто нужно больше потоков.