Ответ на пост «А когда то и 32 Кбайта считалось роскошью)» | Пикабу

Авторизация

Забыли пароль?
Войти
Регистрация

Регистрация

Создавая аккаунт, я соглашаюсь с правилами Пикабу
и даю согласие на обработку персональных данных.

Создать аккаунт
Авторизация

Восстановление пароля

Прислать пароль
Авторизация

или

 

Если вам не приходит письмо с паролем, пожалуйста, напишите на support@pikabu.ru, указав ip-адрес, с которого вы входили в аккаунт, и посты, которые вы могли плюсовать или минусовать. Не забудьте указать сам аккаунт 🙂

подписаться

Добавить пост

Комментарий дня ТОП 50

Неадекват с Авито

мне так одна бабища с авито позвонила в семь утра, и еще издевательски поинтересовалась,что  я такая грустная, не случилось ли у меня чего? благо,я ложусь поздно, и в тот же день (технически – на следующий), в три часа ночи,я перезвонила и участливо поинтересовалась,что у нее  голос такой хриплый и раздраженный,все ли в порядке?? ( взяла она трубку только на 5й звонок))

Показать полностью

+4491 

TinNov

15 часов назад

Рекомендуемое сообщество

CreepyStory

4 414 постов • 24К подписчиков

Подписаться

CreepyStory —  жанр контента, цель которого — напугать читателя. Мы рады вашим страшным историям, видео, фотографиям, а так же годным копипастам.

Пикабу в мессенджерах

  • Пикабу в Telegram
    238097 подписчиков

    @pikabu

  • Развлекательный канал
    45717 подписчиков

    @pikabu_fun

  • Пикабу в Viber
    417K подписчиков

    Вступить

Активные сообщества

все


Домашняя.Ламповая.Наша.


Чёрный юмор


Специфический юмор
1


Славянская мифология и сказки.
1


Фабрика Мемов
1


Больной безумный мир


Книжная лига
1


Лига историков
1


9GAG – Лучшее


Домашняя колбаса, сыр, рыба
1

Создать сообщество

Тенденции теги

Недовольство 15

Объединить теги

Новости Пикабу
Помощь
Правила
Реклама

Верификации
Награды
Контакты
О проекте

Промокоды

Магазин

Android
iOS

f3681

3 дня назад

Ответ на пост «А когда то и 32 Кбайта считалось роскошью)» 

Прочитал пост и вспомнил вот такую историю про Фортран — и про времена, когда деревья были выше, трава зеленее, а программисты всерьёз заботились об оптимизациях…

***

Как-то раз в бородатом детстве в 1993-ом кажется году мы решили писать компьютерную игрушку и для этого решили сравнить производительность трёх языков, на которых умели писать. Borland C++ 4.0, Turbo Pascal 7.0 и Fortran 77. Тестировались две нужные нам задачи — Умножение вектора на матрицу и отрисовывание треугольника стандартными инструментами в режиме EGA.

Довольно быстро выяснилось, что рисование у C и Pascal шло с одинаковой скоростью, потому как использовало одну и ту же библиотеку egavga.bgi, Расчёты на С были примерно вдвое быстрее, за счёт разнообразных проверок на переполнение, которые в Паскале по умолчанию были включены, а в C по умолчанию выключены. Но это можно было исправить директивами компилятора. А вот с фортраном началось самое интересное:

Первый замер был про умножение на матрицу. Когда фортран показал результат в 10000 раз быстрее у нас закралось подозрение. Сначала мы пытались найти ошибку, но потом сдались. Дизасемблирование показало, что отимизатор смекнул, что результаты вычислений внутри цикла не используются и посчитал умножения и суммирования только один раз, для значения переменной цикла в последнем цикле.

Тогда вместо того чтобы внутри цикла делать просто умножения и сложения мы заставили его ещё и суммировать переменную цикла. Когда фортран показал результаты в 10000 раз быстрее, мы сразу полезли в дизасемблер и к величайшему нашему удивлению обнаружили, что фортран суммирование переменной цикла в цикле успешно заменил на формулу подсчёта арифметической прогрессии. Сказать, что мы были в шоке — ничего не сказать.

Следующие пол часа ушли на подбор такой формулы для замеров, в которой оптимизатор фортрана ничего не смог бы упростить. Задачка оказалось нетривиальной, потому что на глазах у удивлённых школьников фортран выносил общий множитель за скобку, заранее умножал друг на друга константы и делал ещё несколько не менее интеллектуальных операций потрясая наше воображение. Когда мы таки смогли его обмануть выяснилось, что по скорости он от C по скорости не отличается.

Когда мы заставили фортран нарисовать закрашенный треугольник 256 цветами, и он показал результаты ровно в 16 раз лучше egavga.bgi мы уже даже не удивились. В EGA было всего 16 цветов. Рисование цветом 17 было то же самое, что рисование цветом 1. Уж не знаю как Fortran77 дозрел до этой идеи, но он треугольник перерисовал только 16 раз разными цветами, и на этом покинул цикл. Пришлось каждый следующий треугольник рисовать сдвигая одну из вершин на 1 пиксель. Результаты оказались примерно такие же как у конкурентов.

В общем по результатам всей этой истории у меня осталось два выводы:

1) Нет большой разницы на каком из нормальных компиляторов писать, если не лениться.

2) Оптимизатор в фортране написан сошедшими на землю богами.

***

Источник: комментарий на Хабрахабре от 2015 года (https://m.habr.com/en/post/261201/comments/#comment_8480183). История, конечно, — «не баян, а классика», но на Пикабу такого поста не было, я проверил 🙂

Рубрики: Без рубрики

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *