| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Удаление переменных List<T> и скорость. |
| Автор: slavaentp 29.11.2009, 21:24 |
| Я как-то написал прогу, где когда нажимаешь клавишу какую-то, добавляется один элемент в List<int>, затем некоторые вещи с ним проделываются, после чего добавленный элемент удалялся(RemoveAt). Это происходило очень часто, и я заметил, что программа стала конкретно тормозить. Я вначале не понимал в чём дело, а потом выяснил, что это именно из-за того, что я удалял элемент из списка. Правильно ли я понимаю, что из List<T> лучше не удалять ничего, т.к. при частом обращении будет тормозить? Или всё-таки можно удалять элементы списка, не теряя при этом значительно скорости? |
| Автор: Exai1e 29.11.2009, 22:34 |
| slavaentp, только что сделал тестовую программу, удаляю элементы, ничего не тормозит, да и не должно ничего тормозить) ошибка видимо где у вас в другом месте |
| Автор: slavaentp 29.11.2009, 22:42 | ||
Я тоже не понял, почему тормозило, просто это было по факту. Причём тормозило не всегда. Там две переменные изменялись, цифра увеличивалась на 1 при нажатии клавиши. Одну клавишу нажмёшь - ints[0] увеличится, другую - ints[1] увеличится, две всего. Так когда одну увеличивал, тормозов не было, а когда другую - были. А удалялась третья переменная ints[2], которая учатсвовала в расчёте первых двух. Я абсолютно не понимаю логику того глюка, но он был и факт ,что когда я убрал RemoveAt, то есть перестал удалять третью переменную, он исчез. Надеюсь, что-нибудь понятно |
| Автор: Экскалупатор 29.11.2009, 22:48 |
| slavaentp, а зачем были эти танцы с бубном? чем было оправдано в твоем случае использование такого элемента как List<int>? можно было просто массив или структуру сделать, или даже просто объявить три переменные... |
| Автор: DenWPF 29.11.2009, 23:07 |
| ну в одном он прав, при удалении должно тормозить, ЛИСТ это же просто наш добрый массив, и его надо переписать и записать в новый. БРЕД - то что я написал выше=) лист, это связный список и при удалении одной переменой просто перезаписывается один адрес. |