Пресса пишет, что переписав всё на Rust можно сэкономить до 50% энергии датацентров.
Пишут это в контексте C/C++, но пример с энергоэффективность почему-то касается javascript.
Но да ладно. Интересно реально ли и за счёт чего он может оказаться энергоэффективнее C/C++. Кто-нибудь видел данные?
Здравствуйте, Nuzhny, Вы писали:
N>Пресса пишет, что переписав всё на Rust можно сэкономить до 50% энергии датацентров. N>Пишут это в контексте C/C++, но пример с энергоэффективность почему-то касается javascript. N>Но да ладно. Интересно реально ли и за счёт чего он может оказаться энергоэффективнее C/C++. Кто-нибудь видел данные?
Шейн Миллер утверждает, что использование ПО на Rust, лишенное известных проблем его аналогов на C, позволяет сократить объемы энергии, потребляемые центрами обработки данных. С его слов, переход на такое ПО даже по самым пессимистичным прогнозам поможет снизить потребление ЦОДами энергии на 50%.
Я полагаю что это надо так трактовать: на Си боязно, С++ мы не осилили и снежинки их бояццо, но JS и Python любят. А так как снежинки верят что Rust простой и безопасный (гы-гы), то если писать на нем то энергии будет жраццо меньше.
Иначе это ты никак не интерпретируешь, т.к. у Rust тот же LLVM под капотом и Rust по определению не может быть более экономичным с точки зрения потребления энергии чем Clang.
Здравствуйте, Nuzhny, Вы писали:
N>Пресса пишет, что переписав всё на Rust можно сэкономить до 50% энергии датацентров. N>Пишут это в контексте C/C++, но пример с энергоэффективность почему-то касается javascript. N>Но да ладно. Интересно реально ли и за счёт чего он может оказаться энергоэффективнее C/C++. Кто-нибудь видел данные?
Ничего личного просто бизнес. Кто-то вваливает деньги в продвижение этого говница.
Здравствуйте, Nuzhny, Вы писали:
N>Но да ладно. Интересно реально ли и за счёт чего он может оказаться энергоэффективнее C/C++. Кто-нибудь видел данные?
Ясно же, что в общем случае ни за счет чего (какие-нибудь очень частные сценарии могут и придумать), а вот попытка продавить Rust во все щели за счет нагнетания экоистерии дурно пахнет в смысле реальных качеств языка.
Здравствуйте, Nuzhny, Вы писали:
N>Но да ладно. Интересно реально ли и за счёт чего он может оказаться энергоэффективнее C/C++. Кто-нибудь видел данные?
Здравствуйте, kaa.python, Вы писали:
KP>Иначе это ты никак не интерпретируешь, т.к. у Rust тот же LLVM под капотом и Rust по определению не может быть более экономичным с точки зрения потребления энергии чем Clang.
У ржавого есть кой-какие оптимизации, которые могут сработать только если переданный указатель не алиасится с другими.
Но это капля в море, а рантайм-проверки прожирают перфоманс в хлам.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, Nuzhny, Вы писали:
N>Пресса пишет, что переписав всё на Rust можно сэкономить до 50% энергии датацентров.
С жабоскрипта? Да, сравнивал на примере самодельных авторизаторов в AWS, скорость выполнения вырастает где-то вдвое если на питон переписать, и втрое если на го или раст.
Хотя большая часть времени типовой облачной функции всё равно запросы по сети или к базам, так что даже тормознутость жабоскрипта не так важна.
Рантайм для Rust кстати всё ещё полуофициальный — в списке нет, но он на гитхабе awslabs, так что статья несколько преувеличивает
Здравствуйте, T4r4sB, Вы писали:
TB>У ржавого есть кой-какие оптимизации, которые могут сработать только если переданный указатель не алиасится с другими. TB>Но это капля в море, а рантайм-проверки прожирают перфоманс в хлам.
Насколько я понимаю, оптимизации идут на двух уровнях: фронтэнд (Clang и Rust соответственно) и бэкенд (LLVM в обоих случаях, так что тут паритет). При этом в оптимизацию фронтэнда C++ вложено просто безумное количество ресурсов, чего сказать про Rust никак нельзя. Если предположить что идея Rust более удачная (почему бы и нет?), мы получим что-то более-менее одного уровня, с конкуренцией за 2-3%, но не какую-то заметную не вооружённым взглядом разницу.
Здравствуйте, kaa.python, Вы писали:
KP>Насколько я понимаю, оптимизации идут на двух уровнях: фронтэнд (Clang и Rust соответственно) и бэкенд (LLVM в обоих случаях, так что тут паритет).
Вот обработать атрибут noalias у параметров-указателей — это явно работа бекенда.
Но вот расставить этот атрибут, не боясь что-то поломать — это работа фронтенда. И Раст это может, а С++ нет. Нельзя в С++ ном коде просто взять и расставить noalias.
KP>При этом в оптимизацию фронтэнда C++ вложено просто безумное количество ресурсов, чего сказать про Rust никак нельзя.
Да я б не сказал, что там есть какая-то реальная разница. Ну шаблоны раскрываются во время компиляции, но это оба могут.
А знаменитые УБшечки — это тоже расстановка флагов для бэкенда.
Реальная проблема Раста это неотрубаемые проверки, в том числе в местах, которые С++ и в голову не придёт проверять, и необходимость непрямых индирекций для связей между объектами (через Rc<RefCell<Vec<Rc<RefCell<Object>>>>> либо через хранение индексов)
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, kaa.python, Вы писали:
KP>Насколько я понимаю, оптимизации идут на двух уровнях: фронтэнд (Clang и Rust соответственно) и бэкенд (LLVM в обоих случаях, так что тут паритет). При этом в оптимизацию фронтэнда C++ вложено просто безумное количество ресурсов, чего сказать про Rust никак нельзя. Если предположить что идея Rust более удачная (почему бы и нет?), мы получим что-то более-менее одного уровня, с конкуренцией за 2-3%, но не какую-то заметную не вооружённым взглядом разницу.
У компилятора Rust тот же LLVM внутри, что и у компилятора C++, и все языконезависимые оптимизации у них одинаковые. При этом, с одной стороны, в C++ вколочено гораздо больше денег, а с другой, код на Rust должен быть более analysable, чем на C++. Но вряд ли практическая разница в реальном коде составит более нескольких процентов.
Здравствуйте, Nuzhny, Вы писали:
N>Пресса пишет, что переписав всё на Rust можно сэкономить до 50% энергии датацентров.
А метановые выбросы из кишечников вовлеченных в процесс программистов прессе подсчитала?
N>Пишут это в контексте C/C++, но пример с энергоэффективность почему-то касается javascript. N>Но да ладно. Интересно реально ли и за счёт чего он может оказаться энергоэффективнее C/C++. Кто-нибудь видел данные?
Реальный код на JS исполняется, в грубом приближении, раза в два медленнее, чем на C/C++. Код на Rust'е, полагаю, мало чем отличается от кода на C/C++.
Здравствуйте, T4r4sB, Вы писали:
N>>1.03-1.04, там же. TB>Там сплошной ансейф что ли?
Адепты 15 разных способов инициализации массива в С++ всё никак не могут поверить, что в большом масштабе быстродействие у Rust и С++ почти одинаковое, но вот разработка на Rust удобнее. Как так, 20 лет учили Святой Стандарт, головой об клетчатый пол бились — и всё впустую.
Здравствуйте, Слава, Вы писали:
С>Адепты 15 разных способов инициализации массива в С++ всё никак не могут поверить, что в большом масштабе быстродействие у Rust и С++ почти одинаковое, но вот разработка на Rust удобнее. Как так, 20 лет учили Святой Стандарт, головой об клетчатый пол бились — и всё впустую.
Про удобство разработки согласен.
Про скорость — да гонево, неотрубаемые проверки при индексации массива, при обращении к RefCell итд. Только на ансейфе Раст может вытащить. Ну либо это синтетический тест.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, netch80, Вы писали:
Pzz>>Реальный код на JS исполняется, в грубом приближении, раза в два медленнее, чем на C/C++.
N>В 6.52 раза.
Когда компилятор Go перевели с C на Go, более-менее 1:1, без изменения внутренней архитектуры, скорость упала в 2 раза. Вот это — какой-то осмысленный тест. Но таких тестов, к сожалению, очень мало.
А с синтетическими тестами та беда, что при желании их можно под любой результат подогнать.
Pzz>> Код на Rust'е, полагаю, мало чем отличается от кода на C/C++.
N>1.03-1.04, там же.
Здравствуйте, vsb, Вы писали:
vsb>Я считаю, что это пример экошизы. Из разряда дня земли.
Гораздо хуже.
В Часе Земли смысл есть — привлечь внимание. (Считать, что это способ экономии, всё равно, что считать Ice Bucket Challenge способом охладиться в жару).
А вот в экономии энергии путём переписывания на Rust'е…