Re[3]: Rust и экология
От: Слава  
Дата: 22.02.22 16:19
Оценка:
Здравствуйте, Shtole, Вы писали:

S>В Часе Земли смысл есть — привлечь внимание. (Считать, что это способ экономии, всё равно, что считать Ice Bucket Challenge способом охладиться в жару).

S>А вот в экономии энергии путём переписывания на Rust'е…

Сейчас вот вообще на JS переписывают, много ль в том смысла?
Re[3]: Rust и экология
От: vsb Казахстан  
Дата: 22.02.22 17:07
Оценка: -1
Здравствуйте, Shtole, Вы писали:

vsb>>Я считаю, что это пример экошизы. Из разряда дня земли.


S>Гораздо хуже.


S>В Часе Земли смысл есть — привлечь внимание. (Считать, что это способ экономии, всё равно, что считать Ice Bucket Challenge способом охладиться в жару).


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

S>А вот в экономии энергии путём переписывания на Rust'е…


Экономия может и будет. Но она будет слишком мала, чтобы на что-то повлиять. Подавляющее большинство того, что может тормозить, уже давно написано на быстрых языках. А какой код будет ждать прихода очередного TCP-пакета, Rust или Python, процессору без разницы, он в любом случае спит.

Я вот только что написал программку, которая перекачивает гигабайты из одного S3-хранилища в другое. Написал на ноде. Потребление процессора у неё во время работы около 1% (думаю, меньше, просто так показывает). Ибо она тупо перекладывает байты из сокета в сокет, а остальное время ждёт, пока придут новые. Ну перепишу я её на расте. И что, будет она потреблять не 1%, а 0.1%. Какая разница, что там, что там копейки.

Ну и конечно никто в реальности не будет переписывать на расте то, что пишется на языках более высокого уровня, так же, как никто не будет слазить с автомобиля, если не ущемлять, а в программировании вроде ущемлять ещё не научились.
Re[6]: Rust и экология
От: vsb Казахстан  
Дата: 22.02.22 17:12
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Про скорость — да гонево, неотрубаемые проверки при индексации массива, при обращении к RefCell итд. Только на ансейфе Раст может вытащить. Ну либо это синтетический тест.


В идиоматичном коде компилятор обычно может убрать все или большинство проверок.

Ну и вообще проверки не такие уж и страшные, когда они никогда не срабатывают. Процессор просто их игнорирует и считает дальше. Если сработают — будет медленно. Пока не срабатывают — вообще пофиг, 1 такт это ничто.
Re[7]: Rust и экология
От: T4r4sB Россия  
Дата: 22.02.22 17:14
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Ну и вообще проверки не такие уж и страшные, когда они никогда не срабатывают. Процессор просто их игнорирует и считает дальше. Если сработают — будет медленно. Пока не срабатывают — вообще пофиг, 1 такт это ничто.


Ты хочешь сказать, что предсказать ветвлений позволяет тратить 1 такт при виде инструкции перехода, если по ней ни разу не было перехода во вторую ветку? Я просто не очень в теме, потому и спрашиваю
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[8]: Rust и экология
От: vsb Казахстан  
Дата: 22.02.22 17:34
Оценка:
Здравствуйте, T4r4sB, Вы писали:

vsb>>Ну и вообще проверки не такие уж и страшные, когда они никогда не срабатывают. Процессор просто их игнорирует и считает дальше. Если сработают — будет медленно. Пока не срабатывают — вообще пофиг, 1 такт это ничто.


TB>Ты хочешь сказать, что предсказать ветвлений позволяет тратить 1 такт при виде инструкции перехода, если по ней ни разу не было перехода во вторую ветку? Я просто не очень в теме, потому и спрашиваю


Я могу ошибаться, но моё понимание такое, что компилятор может "подсказать" процессору путь, по которому программа пойдёт с большей вероятностью. И ничего тут предсказывать не придётся. Если предсказание было неверное, то конвеер остановится, откатится и тд, но пока оно верное, всё будет быстро. тут немного написали, в gcc для этого есть макрос __builtin_expect

На самом деле современные процессоры содержат в себе всякие эвристики и скорей всего такие вещи даже без подсказок будут выполнять быстро. AMD там чуть-ли не простейшие нейросети засовывает.
Отредактировано 22.02.2022 17:35 vsb . Предыдущая версия .
Re[4]: Rust и экология
От: Shtole  
Дата: 22.02.22 18:57
Оценка:
Здравствуйте, vsb, Вы писали:

S>>В Часе Земли смысл есть — привлечь внимание. (Считать, что это способ экономии, всё равно, что считать Ice Bucket Challenge способом охладиться в жару).


vsb>Проблема Часа Земли в том, что резкое понижение потребления легко может привести к авариям в энергосети. И уж точно приводит к незапланированным затратам (ну может уже и планируют под дурачков). В сети нельзя просто так выключить лампочку. Генератор крутится и энергия выделяется и она должна где-то рассеяться. Потихоньку генератор остановится, но это занимает время, для разных электростанций по-разному.


Идея Часа Земли не в том, чтобы снизить ж-ж-ж в трансформаторе, а в том, чтобы повысить ж-ж-ж в Интернете. Хотя если подумать, и с Rust'ом, наверно, та же в точности фигня в данном случае
Do you want to develop an app?
Re[5]: Rust и экология
От: DarkEld3r  
Дата: 22.02.22 19:54
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Реальная проблема Раста это неотрубаемые проверки, в том числе в местах, которые С++ и в голову не придёт проверять


Например?
Re[6]: Rust и экология
От: T4r4sB Россия  
Дата: 22.02.22 20:03
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>Здравствуйте, T4r4sB, Вы писали:


TB>>Реальная проблема Раста это неотрубаемые проверки, в том числе в местах, которые С++ и в голову не придёт проверять


DE>Например?


borrow_mut
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[7]: Rust и экология
От: ArtDenis Россия  
Дата: 22.02.22 20:13
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>borrow_mut


Он тоже убирается оптимизатором в некоторых случаях, когда оптимизатор уверен, что флаг заимствования не задействован:

https://godbolt.org/z/bWs95sx7T
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Отредактировано 22.02.2022 20:15 ArtDenis . Предыдущая версия .
Re[7]: Rust и экология
От: DarkEld3r  
Дата: 22.02.22 20:19
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>>>Реальная проблема Раста это неотрубаемые проверки, в том числе в местах, которые С++ и в голову не придёт проверять


DE>>Например?


TB>borrow_mut


RefCell? Если сильно надо, то можно использовать as_ptr — проверок не будет. Тут в теме ещё про массивы проскакивало — на всякий случай, для них есть get_unchecked.
Re[8]: Rust и экология
От: ArtDenis Россия  
Дата: 22.02.22 20:26
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>Если сильно надо, то можно использовать as_ptr — проверок не будет. Тут в теме ещё про массивы проскакивало — на всякий случай, для них есть get_unchecked.


Зачем использовать unsafe? Тогда весь смысл rust-а теряется. Лучше уж родные проверенные плюсы ))
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[9]: Rust и экология
От: Слава  
Дата: 22.02.22 20:32
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Зачем использовать unsafe? Тогда весь смысл rust-а теряется. Лучше уж родные проверенные плюсы ))


Вот приделают к Rust верификатор, и можно будет эти проверки из рантайма в принципе убрать.

В то же время в плюсах тоже есть checked доступ к массивам.
Re[2]: Rust и экология
От: Basil2 Россия https://starostin.msk.ru
Дата: 22.02.22 20:35
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Я считаю, что это пример экошизы. Из разряда дня земли.


Оплата электроэнергии — чуть ли не основная статья расходов дата-центров. И это не считая затрат на охлаждение. Поэтому это очень выгодно. А не бросаются всё переписывать видимо потому, что это чревато ошибками, что для дата-центра критично.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[10]: Rust и экология
От: ArtDenis Россия  
Дата: 22.02.22 20:38
Оценка:
Здравствуйте, Слава, Вы писали:

С>Вот приделают к Rust верификатор, и можно будет эти проверки из рантайма в принципе убрать.


Причём тут верификатор, если человек предлагает использовать unsafe? А рантайм-проверки в простых случаях и так убираются оптимизатором.
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[8]: Rust и экология
От: T4r4sB Россия  
Дата: 22.02.22 20:40
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>RefCell? Если сильно надо, то можно использовать as_ptr — проверок не будет. Тут в теме ещё про массивы проскакивало — на всякий случай, для них есть get_unchecked.


А, то есть грязь с ансейфом.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[8]: Rust и экология
От: T4r4sB Россия  
Дата: 22.02.22 20:42
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Он тоже убирается оптимизатором в некоторых случаях, когда оптимизатор уверен, что флаг заимствования не задействован:

AD>https://godbolt.org/z/bWs95sx7T

Полагаю, что эти случаи — примерно те, в которых и человек изначально не будет городить RefCell.
Речь идёт о более сложных примерах, когда без RefCell не обойтись
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[11]: Rust и экология
От: Слава  
Дата: 22.02.22 20:44
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Причём тут верификатор, если человек предлагает использовать unsafe? А рантайм-проверки в простых случаях и так убираются оптимизатором.


В непростых случаях верификатор позволит либо явно убрать рантайм-проверки, когда оптимизатор сам не справляется, либо написать unsafe, который однако же будет верифицированным и безопасным.
Re[9]: Rust и экология
От: ArtDenis Россия  
Дата: 22.02.22 21:00
Оценка: +2
Здравствуйте, T4r4sB, Вы писали:

TB>Речь идёт о более сложных примерах, когда без RefCell не обойтись


Согласен. В сложных случаях RefCell добавляет несколько процессорных инструкций. Но всё равно не понятно почему тут обсуждается именно borrow_mut(), потому что его вызовы в реальных среднестатистических программах происходят на порядки реже, чем обращение к элементу массива по индексу, в особенности, если на расте пишут не в стиле раста ))
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[10]: Rust и экология
От: T4r4sB Россия  
Дата: 22.02.22 21:03
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, T4r4sB, Вы писали:


TB>>Речь идёт о более сложных примерах, когда без RefCell не обойтись


AD>Согласен. В сложных случаях RefCell добавляет несколько процессорных инструкций. Но всё равно не понятно почему тут обсуждается именно borrow_mut(), потому что его вызовы в реальных среднестатистических программах происходят на порядки реже, чем обращение к элементу массива по индексу, в особенности, если на расте пишут не в стиле раста ))


У меня этот borrow_mut блин везде. Потому что Rc<RefCell<>> просто блин везде. Даже вот элементарно прокинуть хоть какой-то контекст в каллбак — всё, пихай Rc<RefCell> потому что любая попытка захватить нормальную ссылку приведёт к невозможности что-то ещё делать с объектом в другом коде.
А местами реально доходит до Rc<RefCell<Vec<Rc<RefCell<usize>>>>>
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[11]: Rust и экология
От: ArtDenis Россия  
Дата: 22.02.22 21:12
Оценка: +1
Здравствуйте, T4r4sB, Вы писали:

TB>У меня этот borrow_mut блин везде. Потому что Rc<RefCell<>> просто блин везде. Даже вот элементарно прокинуть хоть какой-то контекст в каллбак — всё, пихай Rc<RefCell> потому что любая попытка захватить нормальную ссылку приведёт к невозможности что-то ещё делать с объектом в другом коде.

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

TB>А местами реально доходит до Rc<RefCell<Vec<Rc<RefCell<usize>>>>>

Я стараюсь по максимуму задействовать обычные ссылки, где это возможно. Но, да, согласен, Rc<RefCell<>> или Arc<Mutex<>> — "наше всё" ))
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.