The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск утилиты для резервного копирования rclone 1.35"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Есть идеи по улучшению форума и сайта ? Пишите.
. "Выпуск утилиты для резервного копирования rclone 1.35" +1 +/
Сообщение от Аноним (-), 10-Янв-17, 20:50 
> части функций, которые не используются.

Я проверял на разном софте.
1) Упомянутый мной tweetnacl-lite, с которым я развлекаюсь засовывая его в cortex-M. Если с LTO собрать, но нигде не вызвать, LTO его выносит целиком. Ну то-есть от него ничего не остается. Если другого кода не было - я получаю пустой бинарь, состоящий из дефолтных vectors. Как еще эффективнее код выносить я даже и не знаю :)

2) В большом сложном бинаре на плюсах LTO вырубил примерно четверть кода.

Как по мне так там с -flto -fwhole-program (whole-program имеет некие особенности, ахтунг) dead code вырубается очень даже.

> Больше всего выбрасывает -ffunction-sections -fdata-sections + -Wl,--gc-sections так
> как выкидывает неиспользуемые функции и данные целиком.

Упомянутое вроде бы вырубает неиспользуемые функции просто в ноль. И особенности особенностями, а в типовых случаях не вижу никаих проблем. Законы мерфи не отменяли.

> Зависит от того какой код. Допустим 10% уходило на вызов + сохранение
> + восстановление регистров. Мы инлайним эту функцию  10-100 раз - код растет.

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

>> И у gcc вроде есть анализы когда и что выгоднее.
> AFAIK зависит от агрессивности оптимизации, сам он точно рассчитать и предсказать не может.

Не знаю как насчет точности но при решении инлайнить или нет если не было явного хинта, оценивается размер кода функции vs экономия от отсутствия пролога-эпилога и принимается решение, инлайнить или нет. На первый взгляд вполне разумно сделано. Пардон не помню где читал описание уровней и lto.

> Для этого нужно исполнить код с типичными данными на входе.
> У gcc есть и такой режим (забыл как он называется).

Вы про profile-guided optimization чтоли? Это несколько другое. Они как-то геморно делаются и настолько круто мне, имхо, не надо.

> Не всегда. Например большая функция на несколько страниц с switch на кучу
> case. Она может быть разбита и преобразована в десятки мелких функций.

Вполне возможно, но я не знаю насколько анализатор это умеет. Он умеет настолько много что всех его умений я не знаю.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск утилиты для резервного копирования rclone 1.35, opennews, 03-Янв-17, 10:12  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру