Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Итератор / VIP. Оптимизация поиска простых чисел

  • Пишем функцию для поиска простых чисел и
    поэтапно оптимизируем её в двух направлениях.
  • Дата отправки отчёта: 1 июня 2017 г.
  • Задание выполнено: за 2 час. 30 мин.
  • Чему научился: Посмотрел делегаты опять. Посмотрел процесс эволюции кода и оптимизации. Люблю оптимизировать.
  • Что было сложным: Вроде бы ничего.
  • Комментарии: Самое смешное началось, когда у 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кб тоже неплохо. Иногда и один байт решает.
    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. Отбил все желание.

    Камент писал по ходу урока.
  • Оценка видео-уроку:
Отчёт от 10588 за Итератор / VIP. Оптимизация поиска простых чисел




Оцени работу

 
Сохранить страницу:

8275. --
Tekashnik
Tekashnik
ответить
→  kalobyte  # Итератор / VIP. Оптимизация поиска простых чисел / 2017-06-02 08:02

Ничего себе сочинение. В курсе вроде достаточно понятно объяснено как что и откуда брать что бы было понятно



Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Находить простые числа всё более быстрыми алгоритмами
Делал уже когда то давно, теперь повторил))


Научился: Познакомился с алгоритмами поиска простых чисел и со способами их оптимизации. Научился замерять время работы функции.
Трудности: Создать решето Эратосфена. В инете нашел готовое решение, но там так интересно сделано, через индексы массива числа задаются, и в каких ячейках нули, те индексы не пишем... Я решил сделать по своему... может и зря.
1. Я попробовал добавить таймер. У меня получилось. Но метод, предложенный Евгением Витольдовичем удобнее, проще для понимания. Можно к нему добавить последнее найденное простое число. 2. Я запускаю два раза первую функцию is_prime_each_by_0 .... но опять же было интересно узнать о "запуске в середине секунды"... 3. "Он искал только четные числа... Я думал хоть кто-нибудь это заметит" ... Я заметил. Сразу видна подстава. Просто на вебинаре экшн, а я в записи смотрю, холодной головой думаю... (ну и опытный уже немножко))) 4. Способ, созданный на вебинаре перебирает куда быстрее, чем мой эратосфен, поэтому я не буду его показывать. (тем более это дополнительное задание). Ну а вообще всё работает. 5. Классный вебинар и..... такое чувство, что я его когда уже видел...