|
Как сделать быстрее чтение списка файлов?
|
|||
---|---|---|---|
#18+
Задача: взять списко файлов из указанного фолдера и заполнить им таблицу в базе. Для примера - SQLite. Делаю так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Но смущает заполнение сначала массива, а потом переливание из массива в базу. Может можно без промежуточного массива обойтись? И время, и память сэкономится ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 11:17 |
|
Как сделать быстрее чтение списка файлов?
|
|||
---|---|---|---|
#18+
Ролг ХупинМожет можно без промежуточного массива обойтись? И время, и память сэкономится Что экономить-то? Тогда уж отказывайтесь от Directory.GetFiles это корень зла - породитель массива ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 11:24 |
|
Как сделать быстрее чтение списка файлов?
|
|||
---|---|---|---|
#18+
buserРолг ХупинМожет можно без промежуточного массива обойтись? И время, и память сэкономится Что экономить-то? Тогда уж отказывайтесь от Directory.GetFiles это корень зла - породитель массива Чем заменить? Кстати, да, есть такая еще проблема: когда даю параметр, например, взять список файлов со всего диска "d:\", то получаю исключение на "System Volume Information" - нет прав. Как получить список файлов со всего диска, исключая этот системный фолдер ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 11:30 |
|
Как сделать быстрее чтение списка файлов?
|
|||
---|---|---|---|
#18+
Ролг ХупинНо смущает заполнение сначала массива, а потом переливание из массива в базу. Может можно без промежуточного массива обойтись? И время, и память сэкономится С говна сметану собираешь. Накладные расходы на это на порядок-два меньше, чем расходы на вызов одной команды сервера. А этих вызовов - столько же, сколько и файлов. Лучше подумай, как получить список файлов в самом сервере. Не знаю, как в SQLite, в MS SQL Server можно сделать что-то типа: Код: sql 1.
давно этим не занимался, точный синтаксис не помню, но суть понятна: сервер выполнял команду, данные возвращались в виде списка строк, список строк идёт в таблицу. Всё делается за один вызов. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 13:27 |
|
Как сделать быстрее чтение списка файлов?
|
|||
---|---|---|---|
#18+
13thРолг ХупинНо смущает заполнение сначала массива, а потом переливание из массива в базу. Может можно без промежуточного массива обойтись? И время, и память сэкономится С говна сметану собираешь. Накладные расходы на это на порядок-два меньше, чем расходы на вызов одной команды сервера. А этих вызовов - столько же, сколько и файлов. Лучше подумай, как получить список файлов в самом сервере. Не знаю, как в SQLite, в MS SQL Server можно сделать что-то типа: Код: sql 1.
давно этим не занимался, точный синтаксис не помню, но суть понятна: сервер выполнял команду, данные возвращались в виде списка строк, список строк идёт в таблицу. Всё делается за один вызов. В SQLite можно сделать расширение, но он будет в клиенте, так что шило на мыло... Я потому и долбусь на клиенте, что такие команды не допускаются, например, если сервер в туче. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 15:07 |
|
Как сделать быстрее чтение списка файлов?
|
|||
---|---|---|---|
#18+
Ролг Хупин, прежде чем чинить слабое место - сначала найди его. Т.е. профильнись. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 15:13 |
|
Как сделать быстрее чтение списка файлов?
|
|||
---|---|---|---|
#18+
Ролг Хупин, Вы выполняете sql запрос для каждого файла, это не рационально, сформируйте что-то вроде insert into ... values( ... ), ( ... ), ( ... ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 16:00 |
|
|
start [/forum/topic.php?fid=20&fpage=36&tid=1399571]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
128ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 553ms |
0 / 0 |