veretragna
Как писал, так и работает.
- Сообщения
- 140
- Репутация
- 10
Здравствуйте, товарищи!
Есть следующая проблема.
Я написал скрипт, который собирает данные со страницы, анализирует их и сохраняет в собственном текстовом формате. Сохраненных страниц очень много, вполне можно насчитать до тысячи, для каждой страницы создается отдельный файл, в каждом хранится примерно 400-500 знаков значащего текста.
Кроме того, во время старта программы изо всех сохраненных страниц надо считать эти 400-500 знаков и отобразить свойства сохраненной страницы типа даты, времени, идентификатора и набора разнообразных чисел, которые надо отобразить в элементе ListView. В среднем на загрузку 10 страниц уходит около 0,3 секунд, но 100 страниц - это уже 3 секунды, а 1000 - 30 секунд, а при запуске программы это очень много.
Для оптимизации быстродействия работы программы я решил попробовать использовать виртуальный ListView (стиль $LVS_OWNERDATA), но пока не реализовал это. Судя по тому, что я знаю об этом режиме, вместо 1000 элементов за раз подгружается максимум 30 файлов (столько, сколько влезает на экран), и должно быть молниеносно быстро. Но тут возникает другая проблема - с сортировкой. Если мне нужно отсортировать страницы по одной цифре-показателю, это подразумевает, что надо абсолютно все страницы выгрузить в оперативную память (пусть даже по очереди), там сортировать, и уже тогда отобразить в ListView. В итоге получается точно та же проблема - на сортировку данных в памяти тратится ровно столько же времени, сколько и на стартовую загрузку страниц в обычный, не-виртуальный ListView, или даже больше.
Вот на этом моменте нужна Ваша помощь, товарищи. Можно ли сортировку оптимизировать? Обязательно ли грузить все страницы для сортировки? Я даже смотрел в сторону централизованного хранения страниц в базе данных для моментального получения всей базы цифр, но это не совсем удобно, и надо переделывать всю подсистему хранения под корень.
Как быть?
Есть следующая проблема.
Я написал скрипт, который собирает данные со страницы, анализирует их и сохраняет в собственном текстовом формате. Сохраненных страниц очень много, вполне можно насчитать до тысячи, для каждой страницы создается отдельный файл, в каждом хранится примерно 400-500 знаков значащего текста.
Кроме того, во время старта программы изо всех сохраненных страниц надо считать эти 400-500 знаков и отобразить свойства сохраненной страницы типа даты, времени, идентификатора и набора разнообразных чисел, которые надо отобразить в элементе ListView. В среднем на загрузку 10 страниц уходит около 0,3 секунд, но 100 страниц - это уже 3 секунды, а 1000 - 30 секунд, а при запуске программы это очень много.
Для оптимизации быстродействия работы программы я решил попробовать использовать виртуальный ListView (стиль $LVS_OWNERDATA), но пока не реализовал это. Судя по тому, что я знаю об этом режиме, вместо 1000 элементов за раз подгружается максимум 30 файлов (столько, сколько влезает на экран), и должно быть молниеносно быстро. Но тут возникает другая проблема - с сортировкой. Если мне нужно отсортировать страницы по одной цифре-показателю, это подразумевает, что надо абсолютно все страницы выгрузить в оперативную память (пусть даже по очереди), там сортировать, и уже тогда отобразить в ListView. В итоге получается точно та же проблема - на сортировку данных в памяти тратится ровно столько же времени, сколько и на стартовую загрузку страниц в обычный, не-виртуальный ListView, или даже больше.
Вот на этом моменте нужна Ваша помощь, товарищи. Можно ли сортировку оптимизировать? Обязательно ли грузить все страницы для сортировки? Я даже смотрел в сторону централизованного хранения страниц в базе данных для моментального получения всей базы цифр, но это не совсем удобно, и надо переделывать всю подсистему хранения под корень.
Как быть?