Форум сайта python.su
253
FishHookВот с чем соглашусь так соглашусь. До сих пор не понял по какому принципу потом выборка файла осуществляется (последовательная, случайная, групповая или по одному файлу). Насколько сильно у них размер отличается и какой это размер?
что задачу надо описывать во всей её полноте
FishHookЯ все сижу и нахально взращиваю свою лень. Жду когда ктонибудь другой табличку построит, время открытия файла в зависимости от количества файлов в директории для разных файловых систем.
Во-вторых, ext4 ищет файлы в B-tree
Офлайн
253
Прикидка для ext4
data=b" "*1024*128 def nm(i): return f"dat/fil{i:05d}.dat" def timing(): t0=time.perf_counter() for i in range(100): fnm = nm(i) with open(fnm,"rb") as f: res=f.read() t1=time.perf_counter() return t1-t0 100 0.007317231000342872 200 0.009040447999723256 400 0.007314716000109911 800 0.0075293419940862805 1600 0.008200455995392986 3200 0.008313319995068014 6400 0.008287339005619287 12800 0.13485471499734558 25600 0.16891465200023958 51200 0.1359187190028024 102400 0.15426565799862146
f5 = h5py.File("x.h5","w") def timing(): t0=time.perf_counter() for i in range(100): fnm = nm(i) res = f5[fnm][...] t1=time.perf_counter() return t1-t0 100 0.035453856995445676 200 0.036344066000310704 400 0.036448270999244414 800 0.034665200000745244 1600 0.036391139998158906 3200 0.03649178300111089 6400 0.03843339499871945 12800 0.03834176199598005 25600 0.03748207200260367 51200 0.03952697899512714 102400 0.03816127800382674
Офлайн
294
FishHookну пардонте, не заметил тега “сарказм”.
Во первых, я спрашивал не тебя, а топикстартера, как ты наверное догадался, чтобы намекнуть товарищу, что задачу надо описывать во всей её полноте
FishHookВобще щас трудно найти ФС из современных где поиск идет тупо перебором..
Во-вторых, ext4 ищет файлы в B-tree
PEHDOM+ там ведь затык не только в времени поиска, у каждой фС свои таркакны, В NTFS например отключение 8.3 имен, а в ext4 -noatime при монтировании до определенного момента позволяет ускорить операции с файлами, но не думаю что нужно их все перечислять в данном случае.
… используться разные алгоритмы для оптимизации и ускорения поиска, но помогает это ровно до какогото определенного количества, а потом, все равно начинаеться замедление работы…
…Сейчас считается такое количество равным порядка 10К. по крайней мере для наболее распрострянненых NTFS и extfs.
[code python][/code]
Отредактировано PEHDOM (Июнь 30, 2019 21:16:16)
Офлайн
44
а чем sqlite те подходит?
и вставьте ссылку на его url Офлайн
568
doza_and
А не могли бы провести аналогичный тестик с Btrfs, у самого нет никакой физической возможности, пишу с планшета
Офлайн
0
FishHook
Давайте начнём с того, понимаете ли вы как сохранить один файл на диск, а если понимаете, то знаете ли вы как провести эту операцию для N итераций?
Офлайн
186
> Прикидка для ext4
На каком устройстве ФС находилась? На hdd или ssd?
Офлайн
253
Rodegasthdd 7200rpm это очень старенькая машинка Intel 2.66 ГГц. Сейчас куча дел. Попозже посмотрю что на ssd. там время поиска конечно принципиально другое, боюсь что тест надо будет на сях писать.
На hdd или ssd?
ivn
то нужно будет все это читать, для работы web сервера
Офлайн
221
Я быстренько попытался поэксперементировать. ФС на виртуальном диске. Код взят из поста doza_and. Результаты такие
EXT4 100 0.0017139660003522295 200 0.0019179170003553736 400 0.00383644599969557 800 0.005781635999483115 1600 0.012102871000024606 3200 0.024184380999940913 6400 0.048728272999142064 12800 0.10079301699988719 25600 0.1980864200004362 51200 0.43505316199934896 102400 0.846539980999296 Btrfs 100 0.0018997739989572437 200 0.0020562169993354473 400 0.003451447000770713 800 0.007405072999972617 1600 0.014437578000070062 3200 0.026141733998883865 6400 0.05507117400156858 12800 0.13088511299974925 25600 0.28273646799971175 51200 0.48964048300149443 102400 1.0950165480007854 XFS 100 0.0014155379994917894 200 0.001995603000978008 400 0.002913852000347106 800 0.00583976500092831 1600 0.012174425999546656 3200 0.024978338999062544 6400 0.0702129410001362 12800 0.12122568500126363 25600 0.225585627998953 51200 0.4428712689987151 102400 0.9084450480004307
Отредактировано JOHN_16 (Июль 2, 2019 09:33:01)
Офлайн
0
doza_andнагрузка минимальная
Отредактировано ivn (Июль 2, 2019 10:53:27)
Офлайн