Loading...
BoykoNeov avatar BoykoNeov 15 Точки

[Programming Fundamentals] [Homework] [Judge] Lists - Exercises - 03. Array Manipulator

Как ли не я мъчих тая задача, пробвах всякакви варианти да променям части от кода, последния тест винаги гърмеше заради превишаване на паметта.
https://pastebin.com/hLUAby2i

След известно блъскане реших да прибегна до отчаяни решения и след всеки 1000 команди да вика Garbace Collector-a и о чудо - мина и последния тест, при това с 5-6 MB памет по-малко (ако викам GC.Collect(); на всяка команда, тогава гърми последния тест заради време - логично).
https://pastebin.com/53XqVz99

Ще ми е интересно, ако някои предложи по-културен вариант на моя код, че да минава теста без  GC.Collect();  Пробвах с решения на колеги, които минават всички тестове, но така и не разбрах, коя е критичната част от която гълта повече памет.

Поздрави

Тагове:
0
Programming Fundamentals 11/04/2017 14:02:17
hgeorgiev90 avatar hgeorgiev90 11 Точки
Best Answer

Здравей,

Основният проблем в кода ти е, че инициализираш излишно много променливи (и по-специфично листовете - те взимат доста от паметта). Тук ти пускам едно по-оптимално решение на твоя код. 

https://pastebin.com/FuMZp2NV

 

Поздрави!

0
10/04/2017 17:31:53
BoykoNeov avatar BoykoNeov 15 Точки

Благодаря ти за отговора, изглежда наистина това е проблемът - допълнителният лист, в който прехвърям командите след позиция 0, тоест параметрите, което го направих, за да е по-прегледно и да не пиша навсякъде int.Parse :)
От цялото упражнение научих също и че явно все пак има и случаи, където може да ти свърши работи изричното викане на GC.Collect() , въпреки общото мнение в Stack Overflow

Поздрави

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.