169 похожих чатов

У раста большой рантайм? много ли будет весить хелловорд?

53 ответов

74 просмотра

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

Aiwan \ (•◡•) / _bot
раст написан на спп?

Ага)) точнее, С++ основной стал. Первые версии на С++ были. Или С. Но у С++ они заимствовали функции, влияние всё равно есть.

КТ315
10 мегабайт по-умолчанию. В эти 10 мегабайт я бы ...

в 10мб можно линукс с базовыми пакетами и утилитами засунуть

Aiwan \ (•◡•) / _bot- Автор вопроса

то есть, чтоб доказать, что раст является убийцей спп, разработчики пишут его самого на объекте их убийства?

Mixail Frolov
в 10мб можно линукс с базовыми пакетами и утилитам...

Туда можно дос и весь мой инструментарий запихать. А до кучи сектор - два использовать для красивого экрана загрузки😂)))

Aiwan \ (•◡•) / _bot
то есть, чтоб доказать, что раст является убийцей ...

Rust то ничего не доказывают, вроде. А вот такие фанатики непонятные - да. Это как с Intel и AMD. Компании сотрудничают, но фанатики AMD, либо Intel - ссорятся.

можно сделать меньше C

Seer Iλusha ::<Vennik, E16>
первая версия была на ocaml)

А в списках к "благодарностям" то всё равно С++ есть, вон сколько функций то "позаимствовали", живи с этим, гыгы))

Nutritional Rabbit
screenshot

Фу, 356 килобайт. Я бы в эти 356 килобайт уместил целое микроядро.

КТ315
Фу, 356 килобайт. Я бы в эти 356 килобайт уместил ...

там и монолит хорошо вписывается со стопкой дров и парой прог :)

Nutritional Rabbit
почему не полноразмерное ядро

Можно и полноразмерное. Но много времени понадобится (а нейросеть вообще никогда в жизни не напишет, гыгы 😁).

Nutritional Rabbit
оно стока весит из-за эксепшенов

Ну, значит в скорость ему не светит никогда, увы. Я слышал, он там для каждой библиотеки по 1000 проверок делает. Печалька.

Aiwan \ (•◡•) / _bot- Автор вопроса
Nutritional Rabbit
screenshot

356k многовато. у какие ухищрения есть чтоб уменьшить все это дело хотяб до 50 (у сишки можно до 11-20 уменьшить, точно не помню)?

Aiwan \ (•◡•) / _bot
356k многовато. у какие ухищрения есть чтоб уменьш...

у сишки нету исключений, у обоих раста и плюсов именно они так раздувают бинарники

Nutritional Rabbit
чё

Скорость исполнения ужасная будет со всеми этими проверками. Либо безопасность, либо скорость. Значит С++ быстрее Rust.

КТ315
Скорость исполнения ужасная будет со всеми этими п...

исключения обычно как обработчик прерывания вешается

Nutritional Rabbit
какая-то спекуляция

Что такое спекуляция?

КТ315
Что такое спекуляция?

https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B5%D0%BA%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_(%D1%84%D0%B8%D0%BB%D0%BE%D1%81%D0%BE%D1%84%D0%B8%D1%8F)

КТ315
Скорость исполнения ужасная будет со всеми этими п...

там есть флаги для сборки под продакшен , вроде бы

Nutritional Rabbit
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B5%D...

И причём тут это? 356 килобайт физически не сможет исполниться быстрее 1 килобайта. Если только там не 355 килобайт символов (нет). Думай сам, а не у нейросети спрашивай.

могут

могут, если там остальные функции не используются. мы же не включаем в исполнение процесс загрузки

Aiwan \ (•◡•) / _bot- Автор вопроса
Nutritional Rabbit
могут

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

Mixail Frolov
могут, если там остальные функции не используются....

Всё равно в ОЗУ будет загружаться такая программа быстрее. Я всё ещё прав))

Aiwan \ (•◡•) / _bot- Автор вопроса
Nutritional Rabbit
знаешь что такое кешмиссы?

Только давай без нейросети.

Aiwan \ (•◡•) / _bot
нет, расскажешь?

У процессора есть кеш памяти, которую он загружает из ОЗУ, доступ к этой памяти гораздо быстрее чем по материнке идти до оперативки. Он выполняет инструкции из этого самого кеша и чтоб выполнить функцию её надо загрузить. Любой jmp/call инвалидиует текущий кеш процессора, из-за чего нужен очередной цикл загрузки инструкций из озу. Самый простой способ это избежать - вместо call по статичному адресу заинлайнить контент функции прямо тут. Это раздувает бинарник, но ускоряет исполнение.

Nutritional Rabbit
У процессора есть кеш памяти, которую он загружает...

Смешно. Процессор из ОЗУ грузит в кэш в любом случае. Так он будет грузить только больше.

КТ315
Смешно. Процессор из ОЗУ грузит в кэш в любом случ...

он будет грузить меньше, потому что весь код уже в кеше

Nutritional Rabbit
он будет грузить меньше, потому что весь код уже в...

Тогда возвращаемся - процессор грузит в кэш 356 килобайт ненужной ерунды, вместо 1 килобайта. Ещё раз - в чём преимущества?)

КТ315
И причём тут это? 356 килобайт физически не сможет...

откуда кстати у тебя программы на 1 кб взялись

он просто грузит какой-то фиксированный размер типа ~50 кб

Nutritional Rabbit
он просто грузит какой-то фиксированный размер тип...

грузится размер, кратный линии кэша, это вроде как 64 байта когда-то было, если код большой, то большая часть возможно будет сидеть в l2 а в l1 только пару линий

КТ315
Скорость исполнения ужасная будет со всеми этими п...

Тут дед цена вопроса - trade off между безопасностью браузера (и ваших денег) и тем сколько % или сколько флопов мы готовы за это отдать. В вопросах денег я думаю ответ ясен.

Браузер? Проценты? Флопы? Ничего не понял.

КТ315
Браузер? Проценты? Флопы? Ничего не понял.

Тыж толковал про скорость исполнения. А я говорю что во главе угла стоит безопасность. И обсуждать Rust в отрыве от этого нет смысла. Язык создавался с целью быть безопасным. А перформанс - по остаточному принципу. Хотя он выше чем у java/.net если делать бенчмарки.

Да обычный Hello World там. Случайно разговор завязался. Rust умудрился Hello World выдать на 350 килобайт. Вот говорят, там какие-то backtrace и проверки на то, является ли терминал - терминалом. Бр)

КТ315
Да обычный Hello World там. Случайно разговор завя...

Да он параноидален. Я видел код, который открывает файл на rust. Чуть позже покажу если найду у себя. Там запихнули опционал типа Either.

🦝 Katowski Kotovsky
Да он параноидален. Я видел код, который открывает...

Да если бы эта паранойя была в рамках разумного. Я понимаю, если в С там всякие канарейки в код пихаются - ещё прилично выглядит. Но настоооолько... Чтобы прямо так глубоко лезть. И напрашивается вопрос - если уж так глубоко залез, почему дальше то не лезешь? А верны тогда твои проверки на верность среды будут? backtrace я ни разу не писал, даже не знаю, что это (но знакомое слово). Если это трассировка - значит я знаю, как это писать, и напишу, @s54820. Но в язык это зачем пихать? И как программисту потом расширять эти проверки? Если ему надо будет проверить на правильность этих проверок, или изменить их как-то, добавить своё что-то, причём посреди какой-то этой шаблонной проверки? Там есть такая возможность?

КТ315
Да если бы эта паранойя была в рамках разумного. Я...

Бэктрейс — это когда ты упал, идёшь вверх по кадрам стека и (в данном случае) выводишь адреса, названия функций, имена файлов, номера строк. Чтобы видеть, где упало. А не как некоторые программы, где «что-то пошло не так». Для этого тебе нужно, например, иметь отладочную инфу, и её парсер такскать с собой (в основном бинаре или в либе). Вот и набирается. Но выполняться-то всё это будет только при ошибке. И в памяти окажется только при ошибке, у нас страницы по требованию подкачиваются обычно. Да, там жирная стандартная либа, она делает очень много «ненужного» для безопасности и надёжности, но альтернатива этому — небезопасность и ненадёжность :) И я кстати не предлагал проверять диск или не диск. Это просто мем такой, что в хелловорлдах тоже есть ошибки. Он периодически всплывает. Нужно проверять хотя бы результат write(), но не очень ясно, что делать дальше :)

s54820
Бэктрейс — это когда ты упал, идёшь вверх по кадра...

Про диск это я дополнил от себя. Потому что непонятно, кто устанавливает "нужность" этих проверок. Гарантий то никаких никогда нет. Вообще, нет бы на С или С++ написать такую библиотеку времени исполнения с backtrace и прочим. Обязательно было для этого язык создавать?

КТ315
Про диск это я дополнил от себя. Потому что непоня...

Так раст — это про проверку владения и прочих границ. Бектрейсы-то много где есть. Даже в Си: # tcc -b -run bt.c Runtime error: division by zero bt.c:2: at 0064E05B foo() bt.c:7: by 0064E084 main() by 0064E188 _runmain()

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта