13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 643
|
||||||
1 | ||||||
Вернуть список к состоянию при объявлении08.08.2015, 19:26. Показов 990. Ответов 5
Метки нет (Все метки)
Пусть к примеру мы забили список какими-то элементами, как очистить его, да так чтобы полностью вернуть к исходному состоянию при объявлении?
0
|
08.08.2015, 19:26 | |
Ответы с готовыми решениями:
5
Ошибки при объявлении свойства Ошибка при объявлении переменной Ошибки при объявлении CloseHandle из WinAPI Ошибка при объявлении двумерного списка |
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
||||||
08.08.2015, 19:36 | 2 | |||||
1
|
16 / 16 / 8
Регистрация: 05.08.2015
Сообщений: 79
|
|
09.08.2015, 07:46 | 3 |
Lexeq, а если приравнять = new List<Mapper>();
что будет оптимальнее и быстрее? Clear или новый объект, а этот старый пусть хавает garbage collector. С учетом количества элементов: 100, 1000, 10 000, 100 000
1
|
Администратор
|
|||||||||||
09.08.2015, 14:40 | 4 | ||||||||||
Что быстрее - нужно мерять, но мне кажется, что вызов конструктора будет быстрее.
По поводу gc (см. комментарий от разрботчика)
Вот что намерял
Код
Success time: 2.4 memory: 24944 signal:0 00:00:00.9903880 00:00:01.3572817
1
|
16 / 16 / 8
Регистрация: 05.08.2015
Сообщений: 79
|
|
09.08.2015, 18:58 | 5 |
tezaurismosis, у меня получился след. результат в студии:
00:00:00.4879674 00:00:00.4712607 варьируется до: 00:00:00.5348194 00:00:00.4963800 Проверил на 100 000 твой код 00:00:47.7766564 00:00:48.7932602 собственно секунда разницы. на обработке Clear() лично у меня захавал 10% процессора. то есть был скачек на 1-2 секунды. я уверен что когжда-то потом GC захавает возможно столько же при удалении объекта без ссылки (на второй операции). Вообще ради интереса почитал, что пишут на "стеке" и люди там склоняются все же к использованию Clear(). На практике так и делают? Я как неуч всегда создавал новый объект век живи - век учись
0
|
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
|
|
09.08.2015, 20:49 | 6 |
Так это же полностью зависит от планируемого использования объекта.
Если список используется еще где-то, то при создании нового объекта будут две переменных, ссылающихся на разные списки. Это желаемое поведение? Это если рассматривать семантическую разницу. Что касается производительности, то вы единственный человек, который может на это ответить: замерьте производительность обоих вариантов в реалистичных условиях (то есть в фактическом использовании, а не в синтетике) и оттуда уже пляшите. Если, например, список создается большой и часто, то постоянный вызов Clear (он затирает все ссылки) может дать выигрыш по сравнению с нагрузкой на сборщик мусора, как и мелкие маложивущие списки. Если список создается большой, но редко, то, возможно, нет смысла держать эту память без надобности. Ну и главное: текущий способ очистки списка создает неприемлемый спад производительности? Если нет, то делайте так, чтобы было понятно читать и поддерживать код.
1
|
09.08.2015, 20:49 | |
09.08.2015, 20:49 | |
Помогаю со студенческими работами здесь
6
Присвоение переменной значения при ее объявлении Вернуть программу к начальному состоянию Получить список списков и вернуть список из N-х элементов подсписков Если первый и последний элементы списка-аргумента - символы, то сформировать список с первого и последнего элементов, иначе вернуть начальный список Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |