Рубрика «производительность»

Вероятно, вы уже слышали о соревновании под названием "The One Billion Row Challenge" (1brc), если же нет, то предлагаю ознакомиться с репозиторием 1brc Гуннара Морлинга.

Как я обработал один миллиард строк в PHP - 1

Моё участие в проекте было мотивировано присутствием в нём двух моих коллег, которые достигли лидирующих позиций.

Читать полностью »

Привет! Если по вашим венам уже во всю течет оливье, но полноценно работать работку пока не тянет, или просто хочется легкого полезного чтива с котиками, то данная статья с блеском подходит под это описание. В ней я постараюсь на реальных примерах рассказать об одном навыке, который считаю ключевым для работы в ИТ, и которому уделяется не так много внимания, как он того заслуживает. Технари любят устраивать холивары — про архитектуры, паттерны, языки программирования, но все это иногда совершенно не то.

Читать полностью »

КДПВ

Немножко истории

Начну с истории вопроса.

Очень давно, я написал Fresh IDE – навороченнoe IDE для программирования на ассемблере, а точнее на FlatAssembler.

Fresh IDE долгие годы меня полностью устраивал, поэтому я с перерывами выпустил 2 главные версии и начал просто его использовать, время от времени внося какие-то исправления и изредка новые функции.

Когда перешел полностью на Linux, оказалось, что Fresh IDE прекрасно работает под WINE и я продолжил им пользоваться без угрызения совести. В процессе даже удалось исправить несколько багов WINE (вот, вот и вот).

Как бы то ни было, но я начал писать библиотеку для переносимости ассемблерных программ между Linux и Windows (и KolibriOS). Одновременно с этим задумался и чтобы сделать Fresh IDE переносимым. Из за архитектуры библиотеки, огромная часть кода уже и так была переносимой. А точнее все что не касалось GUI. К сожалению GUI был полностью написан на Win32 API и его нельзя просто так перенести на другие платформы.

Поэтому и пришлось начинать все сначала. И третья версия Fresh IDE писалась почти с нуля.

Читать полностью »

Мы много лет уже используем в качестве основной базы данных PostgreSQL. За это время он зарекомендовал себя быстрой и надежной СУБД. Однако, есть в PostgreSQL одна проблема, с которой приходится сталкиваться достаточно часто. К сожалению, реализация логики временных таблиц в нем имеет ряд недостатков, которые отрицательно сказываются на производительности системы.

Одним из свидетельств наличия проблемы является то, что для временных таблиц в Postgres Pro была добавлена специальная функция fasttrun, а в Postgres Pro Enterprise существенно доработана работа с ними (см. Читать полностью »

Самый быстрый браузер - 1

В июле 2023 года произошло важное событие — Firefox превзошёл Chrome в популярном тесте Speedometer, который измеряет скорость работы браузеров.

Были времена, когда Firefox считался медленным и неповоротливым браузером, потребляющим много памяти и в целом «тормозным». Когда появился Chrome, то некоторые пользователи перешли на него из-за лучшей производительности. Сейчас ситуация кардинально меняется.

Как Mozilla сумела добиться такого результата?
Читать полностью »

Да, такого я не ожидал. Записал пару неказистых видосов за пять минут, опубликовал в треде Twitter, а они завирусились, набрав к моменту подготовки статьи 8,8K лайков. В самом деле не мог такого спрогнозировать, учитывая, что я годами вывешиваю только такой контент, который интересен лично мне… и ничего, отклик почти нулевой. Теперь, когда ситуация поостыла, время навести суету и с известной тщательностью изложить возникшие у меня мысли.

Читать полностью »

Один из самых часто повторяемых советов программистам, особенно начинающим — это рекомендация писать «чистый» код. Она сопровождается длинным списком правил, сообщающих, что нужно делать, чтобы код был «чистым».

На самом деле, большая доля этих правил не влияет на среду исполнения кода, который вы пишете. Подобные правила невозможно оценить объективно, да это и необязательно, ведь на этом этапе они достаточно произвольны. Однако есть правила «чистого» кода, на которые делают особый упор — это правила, которые можно измерить объективно, поскольку они влияют на поведение кода в среде исполнения.

Если посмотреть на список правил «чистого» кода и вытащить из него правила, которые действительно влияют на структуру кода, то мы получим следующее:

  • Отдавайте предпочтение полиморфизму, а не «if/else» и «switch»
  • Код не должен знать о внутреннем устройстве объектов, с которыми он работает
  • Функции должны быть маленькими
  • Каждая функция должна выполнять одну задачу
  • Принцип «DRY» — Don’t Repeat Yourself («не повторяйся»)

Эти правила достаточно чётко формулируют то, как должен создаваться конкретный фрагмент кода, чтобы быть «чистым». Но я задам такой вопрос: если мы создадим фрагмент кода, соответствующий этим правилам, какова будет его производительность?
Читать полностью »

Импортозамещение в Поднебесной: китайцы выпустили серверный процессор и собираются догнать Intel и AMD - 1

В течение нескольких лет Китай реализует весьма амбициозную программу по разработке и выпуску современных процессоров. Правительство страны планирует через несколько лет полностью отказаться от импортных технологий, разработав отечественные.

Выделено огромное количество средств, и, похоже, деньги используются на нужные цели — не так давно Китаю удалось разработать собственные графические ускорители. Кроме того, представлены и процессоры, но главное — еще впереди. К 2023 году китайцы планируют догнать крупнейших поставщиков чипов из США. Подробности — под катом.
Читать полностью »

В статье Наблюдение за выполнением конкурирующих задач в Go и Rust коллега cpmonster привёл весьма интересные результаты:

Программа на Rust показала намного большую производительность при вычислении членов возвратной последовательности, чем программа на Go: 367 млн. итераций в секунду против 44 млн.

Ну, в 1.5 раза… Ну, в 2 раза… Но семь гвардейцев за два дня — это слишком, тем более что тут "гвардейцев" больше восьми!

Или нет, не слишком? В общем, потенциал любопытства пересилил другие потенциалы и я провёл своё исследование.

Читать полностью »

Кажется, это уже стало традицией: каждый раз, когда я выхожу на новое рабочее место, моя деятельность начинается с бенчмарков различных SDS-решений. Мой приход во «Флант» не стал исключением. Я попал в команду разработки Kubernetes-платформы Deckhouse, где решили развивать возможность запуска виртуальных машин в Kubernetes. Но для этого сначала потребовалось найти простое и надежное хранилище блочного типа, которое можно предложить клиентам платформы.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js