|
Listview VS архив в памяти, почему архив проигрывает по скорости?
|
|||
---|---|---|---|
#18+
Имеется около 100 000 значений, которые могут повторяться. Задача составить их список с подсчетом сколько раз каждое значение повторяется. Делаю так, прежде чем добавить следующее значение в список перебираю уже ранее добавленные и если оно там встречается, то прибавляю единичку к счетчику для этого значения, если не встречается, то добавляю как новое. Что обнаружилось, Listview с этим справляется в несколько раз быстрее, чем архив в памяти. Прилагаю примерчик, значения генерируются рандомно, количество значений уменьшено до 20 000 и даже при таком количестве архив работает почти в два раза медленнее. Может кто подскажет, как ускорить работу с данными в архиве? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2015, 21:40 |
|
Listview VS архив в памяти, почему архив проигрывает по скорости?
|
|||
---|---|---|---|
#18+
PantaloneЧто обнаружилось, Listview с этим справляется в несколько раз быстрее, чем архив в памяти. Прилагаю примерчик, значения генерируются рандомно, количество значений уменьшено до 20 000 и даже при таком количестве архив работает почти в два раза медленнее.На самом деле не в два, а в несколько десятков раз. В вашем коде основное время тратится на обновление прогрессбара и статусбара. Если делать это не в каждом проходе цикла, а в каждом 100-м... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
..., то разница составляет 1,5 сек против 48 сек В процедуре ArchUpdate переменная pID имеет тип Long, и каждый раз при сравнении If MyArch(i).ID = pID происходит преобразование в строку. Почему бы не сделать преобразование один раз при вызове процедуры? Код: vbnet 1. 2. 3. 4. 5.
Время уменьшается в 3 раза, до 16 сек. А вообще, надо делать на коллекции или на словаре. Неоптимальный способ массив+коллекция уже быстрее листвью - сама генерация массива занимает 0,4 сек, с загрузкой в листвью - 1 сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 03:04 |
|
|
start [/forum/topic.php?fid=60&msg=39125845&tid=2155695]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 319ms |
total: | 441ms |
0 / 0 |