Насколько я помню, gcc при компиляции производит какие-то оптимизации кода

под текущее железо, благодаря чему всякие там Gentoo, FreeBSD и прочие UNIX-подобные системы, установка ПО в которых происходит преимущественно путём сборки исходников, работают быстрее. Собственно вопрос: производит ли аналогичные оптимизации rustc? Есть ли разница в производительности софта на расте, хотя бы незначительная, в зависимости от того, был ли он собран на машине, на которой исполняется?

7 ответов

3 просмотра

Типичный пайплайн генерации машинного говно-кода (кода) в 0 и 1. Компилятор принимает поток символов (твой код) и начинается первый этап компиляции. 1) Лексический анализатор, твой код разбивается на лексемы (токен и значение, а может быть просто токен), например: let a = 5; (VariableDeclaraiton), (Id, "a"), (Assign), (Number, "5"), (EndOfLine). Все лексемы записываются в таблицу символов, где может быть и более подробная мета-информация, например, иммутабельна ли твоя переменная? Компилятор имеет постоянный доступ к этой таблице. 2) Синтаксический анализатор. Твой код разбивается на дерево последовательности. Образуется синтаксическое дерево. 3) Семантический анализатор(cargo check), проверяется, а правильно ли вообще написан код? 4) Далее идет очень интересный этап, генерация промежуточного кода. Главное требование к промежуточному коду: удобоворимый код, который можно будет потом скормить ассемблеру (например) и быстрая генерация. В этом этапе все очень verbose и есть куча мест, где можно упростить код, потому идет машинно-независимые оптимизации. 5) Генерация ассемблерного кода, где ассемблер может уже провести машинно-зависимые оптимизации в коде и уже в конечном итоге сгенерировать целевой язык - машинный язык.

lem0nify- Автор вопроса

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

-C target-cpu=<cpu>

Vitaliy
-C target-cpu=<cpu>

Это понятно, потому и указываешь, что ты хочешь. Какой проц и т.д. Не?

lem0nify
Не понял. А как произвести кросс-компиляцию под оп...

читал доки https://doc.rust-lang.org/rustc/codegen-options/index.html#target-cpu ?

lem0nify- Автор вопроса
ozkriff🇺🇦 Lesnikóv
читал доки https://doc.rust-lang.org/rustc/codegen...

Нет, пока внимательно не изучал вопрос, потому что вообще смутное представление имею. Решил для начала тут спросить, на что именно обращать особое внимание, чтобы ничего не упустить при чтении доков.

Ugrik Gheorghe
Типичный пайплайн генерации машинного говно-кода (...

кстати.... а ллвм или раст умеют остановиться на 4 чтоб после сделать 5 под несколько архитектур?

Похожие вопросы

Обсуждают сегодня

а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
Всем привет, может уже кто-то пытался выдернуть из api информацию о дате рождения пользователя Есть ли вообще такая возможность?
Artem Stormageddon
2
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
Ребята, я за проф советом😅 По микросервисам. В монолите есть общие файлы для сервисов: фетчи, конфиги, либы, утилсы.. как при распиле правильно их поддерживать? Пока вариант д...
Александр Тарасюк
1
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
Как можно настроить фильтр в пое под себя?
Yarik yarik kyda ti lezesh
15
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
Карта сайта