Loading...
milen8204 avatar milen8204 296 Точки

[Homework] КПК - Бързодействие и оптимизация на кода

Здртавейте,

Написах някакво домашно и искам да го споделя. Естествено да бъде укорено...

Problem 1. Clean the Smelly Code:

По тази задача, просто намерих някакъв "bottleneck" и изкарах една стойност от един фоцикъл и основно това съм направил.

Скрийн шот преди оптимизацията; Скрийн шот след оптимизацията;

Problem 2. Operations Performance Tests

Направил съм два класа, в едини тъпча методи, които вършат нещата по заданието, а другия принтва резултатите. Направил съм метод, който приема два стринга като параметри, единия е тип (int, long, float, ...), а другия за желано действие (add, subtract, increment, ...).  Използвал съм две променливи тип dynamic и с един swich връщам към динамика съответния тип :) После с друг swich в зависимост от действието го изпълнявам в един форцикъл с двете променливи. По подобен начин съм направил и за другите задачи, като за сортирането съм използвал масив от ICompareble за тестване на съответния тип сорт. Не знам дали го обясних добре за това ето и кода :):

клас с решение; клас за тест;

Малко ми е "хакерско" решението и бих се радвал да разгледам и други.

 

 

5
C# OOP Advanced 10/12/2014 00:52:30
HPetrov avatar HPetrov 822 Точки

От 2-рия ти screenshot доста добро намаляне на натовареността вади. При мен обаче не се получи такова рязко скачане в началото и постепенно намаляне. По-скоро съвсем леко скачане и после плавно си продължава. Може и процесора да ми е по-добър знае ли човек... Профайлера като резултат показваше че 99.9% от натовареността идва само и единствено от Main метода, което е добре. Махнах целия цикъл дето е в EarthRotation метода и step-а го смених на 360, което са градусите, които завърта за цял ден.

Домързя ме да направя screenshots признавам :)

1
milen8204 avatar milen8204 296 Точки

        private void EarthRotation()
        {
            var dasysForPeriod = Days / EarthRotationPeriod;
            for (decimal step = 0; step <= 360; step+=0.00005m)
            {
                EarthRotationAngle = ((double)step) * dasysForPeriod;
            }
            Update("EarthRotationAngle");
        }

 

това ми е оптимизирането на действието.

3
XmUrF avatar XmUrF 363 Точки

Аз лично на тази задача само смених decimal на double и общо взето си заработи доста добре.

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