Array VS List. Колко по-бавни са листовете ?
Опитах се да реша задача [Exercises: Arrays and Lists]10. Pairs by Difference. Като използвам Лист, но получих грешка "Лимит време".
Memory: 10.12 MB
Time: 0.406 s
На лекцията за масиви и листове когато попитаха лектора, "Защо след като листовете са по-добри не ползваме само тях." той одговори,
че били по-бавни и ако не ни трябва тяхната функционалност, по-добре да си ползваме масиви... Така и направих и всичко мина ок.
Memory: 9.25 MB
Time: 0.265 s.
Във варианта с масиви в отделен метод си правя масива... тествах ако не ползвам метод и там времето се качи леко.
Memory: 9.26 MB
Time: 0.281 s
Ще оставя линк кум кода като коментирания код е решението с лист.
Ако може някой да каже защо работи почти два пъти по бавно, както и защо метода също оказва влиание след като кода в нго и без него е 100% един и същ ?
http://pastebin.com/Fmsmuizv
Ок, По този начин се вписах в условието, но пак е доста по бавно.
"List<int> nums = Console.ReadLine().Split().Select(int.Parse).ToList();"
А този "Select(int.Parse)" От къде идва ... Мисля, че разбирам какво прави, но до лекцията за Масиви и Листове не съм го срещал.
Time: 0.390 s
Идва от System.Linq. Общо взето проектира всеки елемент от колекцията в нова форма. В случая го парсва към int, но може и ламбда изрази да му подаваш, примерно да добавя едно към всяко число - Select(n=> n +1). Ще го учите. Засега си го ползвай за парсване, освен ако не искаш да напредеш малко повече от колегите си и да им показваш "фокуси" с LINQ :)))
Сега ако кажеш защо и с Метод работи малко-по бързо ... :)
Това няма логика. Просто Judge дава малко различни резултати всеки път. На мен много пъти ми е давало Time Limit, но като го постна пак - минава. Ако искаш по-точен тайминг, виж как работи Stopwatch класа и си измери вариантите ръчно.