Я бы сильно подозревал, что XML не является медленной частью кода. Закомментируйте строку MyListView.Items.Add
, и я подозреваю, что ваш цикл XMLNode
будет выполнен менее чем за одну секунду.
Для .NET ListView
на компьютере среднего уровня построение 1000 строк в секунду является разумной оценкой производительности. Это почти идеально соответствует производительности вашего кода. Вы можете попробовать несколько приемов, чтобы сделать его на 10-20% быстрее, но чтобы сделать его намного быстрее, вам придется использовать виртуальный ListView
.
У меня есть программа LyricsFetcher , которая читает XML-файл библиотеки iTunes и создает список песен (который похож на то, что вы делаете). Эта программа использует FastObjectListView
из ObjectListView (оболочка с открытым исходным кодом вокруг .NET WinForms ListView). Эта программа загружает и отображает 5000 песен менее чем за 1 секунду - что, я думаю, является именно тем исполнением, которое вы ищете.
Если вы не хотите связываться с виртуальным списком, вот несколько приемов повышения производительности со списком:
- Заключает в скобки все обновления между
BeginUpdate()
/ EndUpdate()
парой
- Не забудьте очистить
ListViewItemSorter
перед вставкой новых строк
- Создайте массив из
ListViewItems
, а затем добавьте их все сразу с помощью listView.Items.AddRange()
Но использование виртуального списка - действительно единственный способ значительно повысить производительность.