Научился: Замечательный и познавательный урок.
Узнала о delegate а так же возможных упрощениях программ, позволяющим повысить их эффективность.
Трудности: Добраться до этого урока, найти время.

Научился: Посмотрел делегаты опять. Посмотрел процесс эволюции кода и оптимизации. Люблю оптимизировать.
Самое смешное началось, когда у 10 000 000 убрали 000 и поместили в другое место.
После этого у меня разультаты стабильно стали почти равными (разница в 100 чисел). А до исправления разница была раза в 3 стабильно.
У меня это вызвало приступ смеха. Вы только вдумайтесь - оптимизация алгоритма стала ненужна. Нужно было оптимизировать время вычисления производительности.
Хотя тут многие могут меня неправильно понять, типа быстрей тот, кто сам определяет, как и в чем считать.
Но я хотел сказать, что похоже либо Компилятор оптимизирует, либо процессоры настолько крут, что ему по барабану такие оптимизации. Процессор и5-4443.
Когда же стали писать is_prime_each_by_3 и запускать, то я заметил, что числа различаются только в младшем разряде и тут я понял, что что-то пошло не так. Оказалось, что в find_primes неправильно написано
if (is_prime__each_by_0(number))
{
count_primes++;
}
а надо
if (is_prime(number))
{
count_primes++;
}
Вот так вот у меня возникло ложное представление о прогрессе и о своем превосходстве с понтовым процессором.
Процессор оказался самый обычный.
Потом когда с корнем сделали, то я был в шоке. Я и не ожидал такого скачка. Думал примерно будет линейно расти.
И вот как только люди придумывают такие оптмизации в матане?
Я один раз for на while заменил в прошивке под контроллер и экономия памяти программ вышла порядка 53 или 56 байт, что для контроллера с 8кб тоже неплохо. Иногда и один байт решает.
http://we.easyelectronics.ru/Asticon/istoriya-odnogo-bayta.html
Второй шок у меня был от is_prime_each_by_P.
Я так и не понял, зачем нужно это все
if (number == 2)
{
primes.Clear();
primes.Add(2);
return true;
}
Однако по мере просмотра ролика выяснилось, что пропущена строка primes.Add(number);. А я это интуитивно ощутил, т.к. еще в начале говорилось, что будет строиться таблица заранее рассчитанных чисел, а добавления в список не было.
Такие таблицы используются для работы с тригонометрическими функциями - таблицы синуса и косинуса, т.к. 8битному контроллеру на 16мгц довольно трудно считать их не имея математического сопроцессора или дсп блока.
Вобщем добил я до конца. Правда так и не понял, как работает тестирование функций.
Почему сравнивается с is_prime_each_by_0? Она 100% рабочая?
Было бы интересно вебинар сделать по юнит тестированию. Все давно пишут, а я даже не читал и понятия не имею.
Еще было бы неплохо сделать платные курсы по алгоритмам цифровых модуляций. Сколько я ни парился, а даже простую афск модуляцию двумя тонами на передачу не осилил.
У меня еще есть исходники демодуляторов разных и тоже не разобрался. Да и инфы нет никакой.
Что сказать по этому уроку? Получился как отдельный курс прям. То ли я упорот в этот день, то ли курс и правда интересный вышел. Я не ожидал даже. Думал будет скучно, но выжать попугаев оказалось довольно интересно, хоть я и не понимал в этих алгоритмах. Спасибо преподу по алгоритмам в быдловузе 2011. Отбил все желание.
Камент писал по ходу урока.