Loading...
MartinBG avatar MartinBG 4803 Точки

На първо гледане, забелявам следните места за оптимизации по твоето решение:

 

- Многократно ползване на sequence.Length в цикъла. Това не е "безплатна" операция и в такива ситуации е добре да използваш променлива, напр. int lenght = sequence.Length

 

- Повтарящи се по смисъл проверки за край на while цикъла и в тялото на цикъла:

 

while (!(pos + step > sequence.Length && pos - step < 0))

if (pos + step < sequence.Length)

if (pos - step >= 0)

 

Може да промениш цикъла на while (true) и да го break-неш като му дойде времето.

 

- Както е отбелязал и колегата @DJColdBrain по-горе, втората проверка е излишна. Един вариант е да използваш else-if. Друг вариант е да използваш continue в тялото на първия if.

 

Ето едно решение с тези "оптимизации".

(използвам long за типовете данни, което най-вероятно е излишно, но в случая си ценя времето повече от това на Judge и се презастваховам, вместо да се чудя защо ми фейлва един от 10 теста :))

0
13/06/2017 14:11:04
dimitar90 avatar dimitar90 13 Точки

Много полезно.Благодаря

А къде мога да прочета за подобни сведения от сорта на това,че като викам .length си коства време :)

1
MartinBG avatar MartinBG 4803 Точки

Като човек, имащ някакъв опит с други езици за програмиране (напр. C++/C, при които лесно може да се намерят "тесните места" в програмите), преживявам голям "културен шок" от сблъсъка си със C# заради performance и memory usage спецификите (бих използвал думата проблеми, но това ще е пресилено), върху които все още имам много малък контрол чрез кода. Visual Studio и Resharper се състезават да ми предлагат "оптимизации" на кода, който съм написал и почти винаги предложеното от тях е по-четимо, кратко и "приятно за окото", докато не дойде време за изпълнение на програмата или пускане в Judge, и се види колко много памет и/или време използва (сравнено отново с "другите" езици). smiley

 

Ето няколко по-кратки страници със съвети по темата:

7 Ways To Optimize C# Code

Effective C# - Performance notes

Performance Tips and Tricks in .NET Applications

C# performance tips & tricks

5 Tips to Improve Performance of C# Code

StringBuilder and String Concatenation

14 C# Tips that improve code efficiency and productivity

 

Много от нещата в горните линкове се повтарят, но са едно добро начало.

 

Тук има структурирани съвети с препратки към по-подробни описания и тестове - като цяло доста добра страница:

https://www.dotnetperls.com/optimization

 

Да не забравяме и Google  - най-добрият приятел на всеки програмист! smiley

 

Успех!

0
14/06/2017 15:56:49
DimoYordanov avatar DimoYordanov 2 Точки

Здравейте,

имам проблем с първия тест, останалите минават!

това ми е кода:  https://pastebin.com/RzpzVNJb

0
dimitar90 avatar dimitar90 13 Точки

Изключително полезно,много благодаря

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