Принцип IBM

Машина должна работать, а человек — думать.

Инвентаризация в Секс-шопе: ...

Первая открытая реализация анклава для аппаратно изолированных окружений
Tue, 11 Dec 2018 13:47:41 +0300

Доля государственных фондов США в финансировании Tor снизилась с 85% до 51%
Tue, 11 Dec 2018 09:31:39 +0300

Голосование за поддержку Adobe Premiere в Linux
Mon, 10 Dec 2018 18:58:45 +0300

Microsoft официально объявил о переходе Edge на движок Chromium
Fri, 07 Dec 2018 12:11:50 +0300

Фонд СПО признал Hyperbola полностью свободным дистрибутивом
Fri, 07 Dec 2018 11:55:53 +0300

Mozilla подготовит версию Firefox, оптимизированную для архитектуры ARM64
Fri, 07 Dec 2018 09:44:39 +0300

Linux Foundation унифицирует инструментарий для проверки соблюдения открытых лицензий
Thu, 06 Dec 2018 14:15:47 +0300

Платформа Eclipse прекращает поддержку 32-разрядной архитектуры
Thu, 06 Dec 2018 10:55:16 +0300

Выпущен патч, решающий проблему с blq-mq в ядре Linux 4.19, которая приводит к потере данных
Wed, 05 Dec 2018 07:27:24 +0300

Microsoft открыл код WPF, Windows Forms и WinUI
Tue, 04 Dec 2018 21:34:15 +0300

Сообщество Handshake пожертвовало миллион долларов Фонду свободного ПО
Tue, 04 Dec 2018 11:39:44 +0300

Microsoft заменит Edge браузером на основе свободного движка Chromium
Tue, 04 Dec 2018 08:18:16 +0300

Компания NVIDIA открыла код движка симуляции физических процессов PhysX
Mon, 03 Dec 2018 23:48:01 +0300

Дополнения для обхода Paywall удалены из каталогов Chrome и Mozilla
Mon, 03 Dec 2018 09:04:08 +0300

Xubuntu прекращает подготовку 32-разрядных сборок
Sun, 02 Dec 2018 21:39:44 +0300

Новости OPENNET
Новости

Nadav Amit, разработчик ядра Linux из компании VMware, поделился результатом исследования особенностей оптимизации в GCC небольших функций ядра. Исследование было проведено после того, как разработчик столкнулся с непонятным феноменом - внесение несущественных изменений в код ядра, приводило к небольшому, но заметному снижению производительности в тестах. Примечательно, что подобные вносимые изменения были оптимизациями и теоретически должны были увеличить производительность, но на деле производительность падала.

Дело оказалось в том, что GCC принимает решение об использовании inline-развёртывания функций в зависимости от результатов косвенной оценки размера результирующего кода (даже если функция определена с ключевым словом "inline"). Компилятор не учитывает фактический размер результирующего кода, а пытается прогнозировать его. Для ассемблерных вставок прогнозирование делается на основе числа переводов строк ("\n") и разделителей (";") в исходном тексте.

Логика подобного расчёта связана с допуском, что одна строка представляет собой одну ассемблерную инструкцию. Но при этом не учитываются ситуации, когда в ассемблерных вставках применяется большое число директив для вычислений, несколько строк которых в результате приводят к генерации лишь одной небольшой инструкции. Подобная особенность может приводить к таким казусам как снижение производительности при добавлении несущественных макросов. Некоторые разработчики отмечают влияние на inline-развёртывание в новых версиях GCC даже замены символов табуляции на пробелы.

Разница в производительности особенно бросается в глаза для функций с ассемблерными вставками, для которых добавляется излишняя обёртка вместо прямой подстановки нескольких указанных в функции инструкций. В ядре Linux проблему представляют компактные функции с макросами WARN(), для которых оказалось, что не выполняется ожидаемая inline-оптимизация.

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

66.2416 75.7075 0.5882 9.5808

НОВОСТИ: Первый кандидат в релизы Wine 4.0 Fri, 07 Dec 2018 22:53:26 +0300

Началось тестирование первого кандидата в релизы Wine 4.0, открытой реализации Win32 API. Кодовая база переведена на стадию заморозки перед релизом, который ожидается в конце декабря или в начале января. По сравнению с выпуском Wine 3.21 закрыто 43 отчёта об ошибках и внесено 342 изменения.

???????@Mail.ru Opera Firefox INFOBOX - хостинг Google Chrome