The OpenNET Project / Index page

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



"Выпуск языка программирования Rust 1.60"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск языка программирования Rust 1.60" +/
Сообщение от Аноним (-), 09-Апр-22, 23:58 
> Но Zig это же делает лучше C.

Нельзя ли примеры с конкретными асмовыми листингами?

> Все просто поверили в мантру чёрного ящика "оптимизирующего компилятора". Однако современные
> компиляторы достаточно слабы.

Вообще-то с LTO он довольно крут. Иногда например умудряется выпилить довольно навернутое вычисление и проверки, заменив солидный кусок парой регистровых операций.

> Ну умеют даже SIMD использовать, нужно ручками.

А он не у всех таргетов есть, увеличивает в разы контекст, использование стэка и времена переключений, так что в системном программировании, где зачастую надо работать с минимальными допущениями это скорее дурной тон. Или premature optimization, который root of all evil. К тому же там все не так просто и у simd обычно есть специфичные требования (например выравнивание). Их выполнения и подготовка окружения к соответствю им не бесплатны: больше RAM жрется и если то что есть сразу в требования не лезло надо дополнительный код, жирнее и медленнее оригинала. Сетап этого может иногда отыграть взад. А настоящие гуру - те кто без всякого SIMD может в скорость железа упереться, как LZ4 например.

Есть вещи на которые это не распостраняется. Но их немного. Типа memcpy в стандартной либе. Но даже там переросточный glibc в сях например - да, быстрый, но если размер кода интересовал, эта быстрота дорого обходится: большая платформозависимая функция. Много кода разом. А если было много мелких операций оно еще и проиграть более простым может.

> Обещали "Rust быстрее С", но не случилось.

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

> Это факт, который глупо отрицать.

А они что, волшебники?

> Насчёт проверок - я хочу сказать что система типов очень ограниченна.
> Это круто, это лучше чем ничего, это значительно лучше чем было "до".

Тут можно поспорить. Хруст пытается рыбку съесть и на ... сесть ценой заставления кодера все нудно аннотировать. Это не имеет костов в ран тайм но не дает кодеру забить на явный баг.

> Zig пошёл другим путём - он делает максимальное количество проверок в runtime.

К сожалению в отличие от того что делает Rust это отливается в более жирный и медленный код. А без этого - отпадают гарантии.

> Система типов значительно проще (но всё равно очень продвинутая по сравнению
> с С и С++). Код читать и понимать значительно легче.
> И как на системе типов Rust ты докажешь что нет утечек памяти?
> Или что вектор содержит ровно N элементов? Или ...

Они решая одни проблемы изобрели много новых. А си хорош тем что проблем относительно немного и они хорошо известны.

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

Оглавление
Выпуск языка программирования Rust 1.60, opennews, 07-Апр-22, 21:12  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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