|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Алексей Роза 2020 пропущено... а в паскале как? Там разные строки были. Был вариант с хранением длины. Как в std::string. И был вариант pchar это наподобие сишных ASCIIZ. И кажется еще было несколько библиотечных вариантов. Ну в основном использовался первый вариант. Я помню классный был тип строки в Паскале. Он хранил длину в байте. И строки не могли быть длине 255. А вот где данные хранились - в самом типе или в динамике я не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 10:01 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Да. Точно. 255. В информатике и выч-технике 20-го века это число - магическое. Во многих приложениях и сетевых протоколах это число заложено как лимит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 10:51 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
petrav А вот где данные хранились - в самом типе или в динамике я не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 11:55 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
По поводу сорцов du (DiskUsage) я нашел один вариант здесь В составе GNU Core Utilities https://github.com/coreutils/coreutils ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 11:58 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
maytonНо на практике, подобные пробирующие алгоритмы не работают потому что память нужна срочно и многим работающим потокам. Так вопрос-то стоит не "кому нужна память", а "зачем нужна память". В попытке ответа на него обычно вылазит "вектор на миллиард". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 12:43 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
disclaimer: * код написан на коленке и не претендует на звание best code ever * 100% содержит ряд багов (и я даже знаю где), но, в целом, показывает подход и пригоден для исследования производительности, и последующего устранения узких мест, т.е. служит некой отправной точкой для желающих заморочится * не поддерживает точки монтирования/hardlinks в каталогах * не будет работать правильно (без доработки напильником), если натравить на C:\windows или корневой каталог тома. В Windows есть каталоги, на которые у вас нет прав :) * обработка ошибок удалена для краткости h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
cpp (портянка) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172.
Диагностику снял с локального каталога на SSD, в первую очередь чтобы показать, что основная масса рассчетов/задержек приходится на kernel функцию FindFirstFile, а не на промахи кэша (но они безусловно есть, но их устранение - это экономия на спичках, имхо) Чуть позже натравлю на каталог покрупнее по сети ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 13:34 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Cerebrum, спасибо большое за труд. А в вижуалах проект должен иметь еще один файлик... эээ. Build-file? Или какой-то make-file? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 13:43 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton А в вижуалах проект должен иметь еще один файлик... эээ. Build-file? Или какой-то make-file? достаточно просто создать пустой Win32 проект и прикрепить к нему эти файлы. в cpp есть функция main, ее код можно уже писать как вам удобно, я привел ее для только как образец выставить в настройках только не забудьте компиляцию с поддержкой C++17 (у меня VS2019) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 13:47 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
анализ этим же кодом более объемного каталога по сети (SMB/SSD/Windows Server 2019/LAN1Gb) в каталоге: 78 Files, 312 237 Folders объем: 465 MB (487 739 392 bytes) время: 3 минуты 19 секунд !!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 14:44 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Cerebrum время: 3 минуты 19 секунд !!!! Судя по профилю, одно только убирание избыточной проверки на существование из calc_directory_size() сократит время на четверть. Ну и итерации вместо рекурсии таки попробуй. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 14:54 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Cerebrum, повтори эксперимент после рестарта операционки. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 14:55 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Cerebrum, повтори эксперимент после рестарта операционки. с которой я обращаюсь на удаленку или удаленку? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 14:58 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Непонятно зачем нам проверять что директория существует? Хм. Как-то избыточно. Следующая-же транзакция пойдет по следам и все равно проверит. Это как проверять что в БД таблица существует перед чтением. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:02 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov убирание избыточной проверки на существование из calc_directory_size() сократит время на четверть. попробуем по субъективным ощущениям (замерить мне их нечем) Total Commander анализирует этот же каталог примерно за то же самое время как и мой код Проводник делает это раза в 3 быстрее плюс / минус Представьте что у вас облачный сервис, в котором клиент хранит свои данные, а ля OneDrive. Он заходит в личный кабинет, где у него должен отобразиться объем занятого его файлами места. Сайт отправляет команду вашей службе и та начинает пилить его диск в течение 3-4 минут! За это время, сколько раз клиент, подумав что браузер завис, начнет эту операцию заново? Короче весело... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:03 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Cerebrum mayton Cerebrum, повтори эксперимент после рестарта операционки. с которой я обращаюсь на удаленку или удаленку? На той на которой ты делаешь дисковые операции. Я думаю что NTFS - умная система. И она - минимизирует физические чтения областей каталогов. И этот механизм можно сбить либо размонтированием тома. И снова монтированием. Что болезненно. И опасно. Либо перезагрузкой. Что проще. Я имею в виду что серия экспериментов будет иметь визуальный вид улучшения результатов. Что само по себе - фейк. В продуктовой задаче иногда бывает важен самый первый запуск джоба. И его измерения будут эталоном. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:05 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Непонятно зачем нам проверять что директория существует? Хм. Как-то избыточно. Следующая-же транзакция пойдет по следам и все равно проверит. Это как проверять что в БД таблица существует перед чтением. с этим никто не спорит, но представим что у нас первая итерация вызова calc_directory_size и указанный каталог не существует, получается что вместо этой проверки достанется по мозгам менеджеру памяти, который будет вынужен сначала построить нам правильную строку для FindFirstFile в utils::findfile_path_builder. То есть вся эта работа будет проведена в пустую, а если принять во внимание, что таких запросов ваша служба может получить сразу несколько или параллельно выполнять что-то тяжелое с памятью, то такое дерганиье менеджера памяти автоматически тормозит на аллокации все потоки в службе. Context Switching однако Понятно, что надо оценить что более трудозатратно с точки зрения ОС: дернуть память пару раз или один раз сходить проверить существует ли каталог по сети. Как уже ответил, я попробую убрать данную проверку и повторить замеры ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:10 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton На той на которой ты делаешь дисковые операции. Я думаю что NTFS - умная система. И она - минимизирует физические чтения областей каталогов. И этот механизм можно сбить либо размонтированием тома. И снова монтированием. Что болезненно. И опасно. Либо перезагрузкой. Что проще. перезагружу, не вопрос. просто я без перезагрузки попробовал после себя Total Commdander'ом и ему это не особо помогло что данные горячие. Я думаю, что это более актуальнее для локальный операций, дисковый кэш, а тут у нас имеется посредник в виде SMB и исполнитель команды не знает что там, на той стороне за ФС, поэтому, ему тяжелее делать какие-то кэш оптимизации дисковых операций. но перезагрузить попробую. Собственно первый мой замер по сети был на холодную ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:13 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Что болезненно. И опасно. Либо перезагрузкой. Что проще. Ню-ню Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:15 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
(Разводя руками) На современных ноутах Windows часто стоит 1 системный раздел. Вот я и исхожу из такого Пареттовского предположения. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:19 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton предположения "Предположение - мать всех провалов" Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:27 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov убирание избыточной проверки на существование из calc_directory_size() сократит время на четверть. убрал проверку, файловый сервер перезагружен ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:29 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, зачем нам SHRINK? Он нам в топике ненужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:36 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Cerebrumубрал проверку Не четверть, но тоже неплохо. Теперь надо переводить на итерации и пробовать параллельное чтение. Вариантов два: 1) Каждый FindFirst/Next создаёт отдельный round-trip на сервер, параллельное чтение будет рулить со страшной силой; 2) Результаты сканирования передаются по SMB пачками, параллельное чтение ухудшит ситуацию. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:36 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Cerebrum За это время, сколько раз клиент, подумав что браузер завис, начнет эту операцию заново? Короче весело... а если он просто F5 зажмёт? Вам в другую сторону копать надо бы ) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 15:38 |
|
|
start [/forum/topic.php?fid=57&msg=39997335&tid=2017328]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 410ms |
0 / 0 |