Бенчмарк Си vs C++ vs Rust vs Go в 2024: Неожиданные результаты и парадоксы производительности

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 ม.ค. 2025

ความคิดเห็น • 126

  • @vladimirchizh8853
    @vladimirchizh8853 4 หลายเดือนก่อน +12

    Поправьте если нет прав. Читаю код раста и C++ и вижу, что создание объектов разное. У раста просто вызывается метод класса, который создаёт обьект на стеке, в С++ создаётся объект в куче. Да ещё и через умный указатель, который имеет свой оверхед в виде сильных и слабых ссылок.

    • @vladimirchizh8853
      @vladimirchizh8853 4 หลายเดือนก่อน +1

      Более честно будет и там и там создавать объекты на стеке

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn 4 หลายเดือนก่อน

      @@vladimirchizh8853 поддерживаю, я сам когда почитал код бэнчмарков, то был в шоке, как можно было так написать код требующий выской производительности, никто бы не стал ничего такого писать ни на С++ ни на Си...

  • @RichardLofty
    @RichardLofty 4 หลายเดือนก่อน +27

    Я категорически не согласен что "веб системы чувствуют одни только преимущества".
    Посмотри на загрузку памяти с 10 вкладками в гугл хроме.
    Я уж молчу про нагрузку процессора на любом сейчас сайте "модерновом".
    У любой абстракции есть стоимость, и к сожалению слишком много "программистов" нынешних не знают даже таких базовых вещей.
    Изза чего живут они, как будто стоимости нет.
    И теперь мы в ситуации когда никто уже без этих абстракций не знает как что либо сделать.
    Джаваскрипт и модерновый веб - это доказательство, что последние 10-20 лет на "инженеров" идет негативный, дисгенический отбор.
    Когда с каждым годом веб становится все хуже, ДАЖЕ не смотря на старания разработчиков компилятора V8 внутри JS.

    • @АлександрВолобуев-м1л
      @АлександрВолобуев-м1л 4 หลายเดือนก่อน +3

      Который год живу с шестью окнами с общим количеством вкладок примерно пару тысяч. Понятно что все одновременно не открываются точнее не обновляются

    • @Александр-ф9в4ю
      @Александр-ф9в4ю 4 หลายเดือนก่อน +4

      @@АлександрВолобуев-м1л Забей, у автора коммента нормальной рыботы нет, чтобы хотябы себе железо 2018го года купить). До сих пор сидит на пеньке1 доставшемуся по наследству от отца 🤣

    • @chexi
      @chexi 4 หลายเดือนก่อน +6

      @@Александр-ф9в4ю железо железом а сайты всё таки говно

    • @RichardLofty
      @RichardLofty 4 หลายเดือนก่อน +1

      ​@@Александр-ф9в4ю
      Эм, у меня свой кластер из 6ти ятх 3060ти.
      Нормальное железо у меня есть.
      Суть вопроса в оперативке а не процессорах.
      Открой активные 10 вкладок ютуба одновременно.
      Плевать какое у тебя железо, гений.

    • @codeline9387
      @codeline9387 4 หลายเดือนก่อน +1

      у любой вкладки есть стоимость, и к сожалению слишком много "пользователей" нынешних не знают даже таких базовых вещей

  • @tistaliv1491
    @tistaliv1491 4 หลายเดือนก่อน +24

    Это лучший бенчмарк который я видел! Жаль что даже не увидел код на C++, но кому вообще нужен код в бенчмарках?

    • @neromoonnn
      @neromoonnn 4 หลายเดือนก่อน +2

      Лол, может людям, которые пишут на этих языках и могут переписать бенчмарк лучше?

    • @doodocina
      @doodocina 4 หลายเดือนก่อน +11

      @@neromoonnnя так понял это сарказм

    • @neromoonnn
      @neromoonnn 4 หลายเดือนก่อน

      @@doodocina нет. "C" простой как топор, в отличии от других языков из ролика. И абстракциями тоже нужно уметь пользоваться. Как сюда язык с GC забрался тоже вопрос интересный. Судя по повествованию в стиле "а... ммм... ну наверное это работает как то так..." автор только на си и писал, ибо в отношении других языков только доводы и слышны. "Ну наверное компилятор раста написан с использованием llvm". И вот в этих домыслах весь ролик. Очередной популист. Или вы из касты "много возможностей в языке - плохо, а шаблоны и вовсе запретить нужно"? Не можешь в плюсы/раст/го, ну и не лезь туда, либо бенчмарки делай показательными и с доступными исходниками, как это и делают люди когда сравнивают реализации на разных языках.

    • @doodocina
      @doodocina 4 หลายเดือนก่อน +2

      @@neromoonnn что нет? при чем тут си? к чему вся эта простыня текста? автор комментария с сарказмом назвал это лучшим бенчмарком, что он видел, потому что это худший бенчмарк, который можно придумать. нету никаких замеров нормальных, сравнивается время выполнения всей программы, инициализация рантайма, флаги кривые в первом тесте

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn 4 หลายเดือนก่อน +4

      Я почитал код бэнчмарков и это вообще что-то коричневое, никто так не пишет ни на С++ ни на Си, и даже на расте этот код будут писать по другому, т.к. к нему предъявляются требования по производительности... В общем я не доверяю этим результатам...

  • @AlexAlex-jk2tn
    @AlexAlex-jk2tn 4 หลายเดือนก่อน +19

    Я почитал твой код бэнчмарков и могу следать вывод, что ты либо не умеешь писать ни на Си, ни на С++, либо ты специально исопльзовал конструкции и подходы, не используемые в этих языках в задачах требующих высокой производительности... В общем я не одобряю данные тесты...
    Кстати да, на расте ты как ни странно тоже плохо код написал, но некоторые вещи для оптимизации использовал в отличии от С++ и Си. Код Go я не смотрел, возможно ты использовал эти решения чтобы не сильно отличаться от него... в общем как-то так себе ты написал бэнчмарки...

    • @MariaEsenina
      @MariaEsenina 4 หลายเดือนก่อน +4

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

    • @linker-arm
      @linker-arm 27 วันที่ผ่านมา

      Нуу, а вы бы на что заменили эти конструкции и как бы оптимизировали (спортивный интерес)?

    • @rightmelancholy1170
      @rightmelancholy1170 20 วันที่ผ่านมา

      ​@@MariaEseninaтак он использовал максимальные оптимизации, плюс, что такое реальные алгоритмические задачи и чем они отличаются от того что человек привел?

    • @rightmelancholy1170
      @rightmelancholy1170 20 วันที่ผ่านมา

      ​​@@MariaEseninaя сам занимаюсь криптографией где функции для подсчета хэшей не отличаются какой то синтаксической выразительностью на СИ и не понимаю чем эти примеры не валидны для бенчмарков

    • @rightmelancholy1170
      @rightmelancholy1170 20 วันที่ผ่านมา

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

  • @RichardLofty
    @RichardLofty 4 หลายเดือนก่อน +7

    Интересно будет сравнить Zig когда он перейдет на свой компилятор без llvm.

  • @RichardLofty
    @RichardLofty 4 หลายเดือนก่อน +8

    Использовать С без рантайма CRT можно абсолютно спокойно и БЕЗ ассемблера внутри кода.
    Используя вызовы к кернелу напрямую.

    • @gippopotamius
      @gippopotamius 3 หลายเดือนก่อน +1

      И C++ тоже. То, что бы написали на C, он переварит (с мелкими оговорками на различия на языки). Но, и поддержка самого C++ тоже реализуема в том числе и на самом языке, без рантайма.
      Итого: различие в быстродействии С и C++ обычно не наблюдается. А вот конкретная реализация компилятора, даже для одного и того же языка, может дать разные результаты.

    • @gippopotamius
      @gippopotamius 3 หลายเดือนก่อน +1

      Более того, если на "не нативный" С# с unsafe, грамотно переписать код с Си, то не смотря на рантайм получим практически тоже самое быстродействие.
      Что я лично проверил на эмуляторе i486, где тестом выступает старая игра, и сравнивается достигнутый FPS.
      И разница быстродействия между C++, C# и Rust... практически никакая, менее 5%.
      То есть кривой исходник теста, влияет сильнее чем компиляторы и языки.

  • @sweetcapitan5690
    @sweetcapitan5690 4 หลายเดือนก่อน +6

    Интересно получается, три языка на llvm, которые в большинстве случаев генерируют практически одинаковый байткод, но при этом с++ сильно уступает. Это как? В бенчмарке с го, автор видимо в цикле выделяет массивы из-за чего ГЦ и задыхается, отсюда и такое отставание. И отсутстивие исходников, это только подтверждает.

    • @animuspexus
      @animuspexus 4 หลายเดือนก่อน +3

      та небось массивы копирует в аргументах. сколько раз уже такое было. ну, собственно говоря, для таких кадров и придумали упрощённые язычки, типа go и rust

    • @litterjunk8632
      @litterjunk8632 4 หลายเดือนก่อน

      ну как бы очевидно - у остальных фронтендов оптимизация включена по умолчанию.

  • @mamonakh
    @mamonakh 4 หลายเดือนก่อน +9

    Без кода бенчмарков результаты и все выводы недостоверны

    • @proletarian
      @proletarian 4 หลายเดือนก่อน

      Посмотрите пожалуйста в описание, там ссылка на гитхаб, очень благодарен что смог вам помочь

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn 4 หลายเดือนก่อน +3

      @@proletarian Я посмотрел код бэнчмарков, там вообще всё не очень... Код явно написан чтобы получить предъвзятые результаты, на Си и С++ никто так не пишет, тем более производительный код, даже на расте тесты можно написать было лучше, в общем, такие себе результаты, вообще ни о чём...

    • @proletarian
      @proletarian 4 หลายเดือนก่อน +3

      @@AlexAlex-jk2tn я послушал несколько видео, какой то автор сомнительный

  • @bigtown2012
    @bigtown2012 4 หลายเดือนก่อน +3

    А вообще я делал филосовские размышления на тему появления go, java и т.д. и соответсвующей депопуляризации Си. И я пришел к выводу что делается это намеренно в первую очередь что бы исключить появление новых ОС. Знание тонкостей железа сейчас тоже не в тренде, есть же языки которые "позволяют" тебе об этом не думать. Сложите 2+2 и сделайте вывод.

    • @ВладиславСмирнов-ъ3ы
      @ВладиславСмирнов-ъ3ы 4 หลายเดือนก่อน

      Нет, эти языки делаются намерено, чтобы быстрее писать бизнес-приложения. Бизнесу плевать на тонкости железа, ему важнее сделать быстрее продукт, продать его, тем самым заработав денег. Будет твой софт работать 1 с, а не 0,1 мс - вообще насрать.

  • @ted_res
    @ted_res 4 หลายเดือนก่อน +4

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

  • @koshchey42
    @koshchey42 หลายเดือนก่อน

    Есть минимум два сайта, где тестируют много языков на разных задачах. Там для одной задачи несколько вариантов кода. Результаты очень разные даже для одного языка.

    • @koshchey42
      @koshchey42 หลายเดือนก่อน

      Их можно найти по запросу «programming language benchmarks»

  • @cyrilanisimov
    @cyrilanisimov 4 หลายเดือนก่อน +4

    Огромный плюс плюсов в том, что можно бесшовно работать с Си кодом. Кроме того, Си код валиден в плюсах.
    У других языков не так гладко это работает

    • @maxrusspb
      @maxrusspb 29 วันที่ผ่านมา

      В Расте вроде тоже можно бесшовно работать с Си, типа перегрузить стандартные сишные функции из libc в растовскую stdlib, и использовать сишные зависимости вместо стандартной растовской библиотеки. Или просто отключить растовскую стандартную библиотеку и использовать сишную.
      P.S. То есть, ты в Расте можешь просто отключить стандартную библиотеку и использовать сишную, при этом тебе будут доступны всякие растовские фишки типа владения, контроля ссылок, супер-пупер абстракции с нулевой стоимостью и т. п.

    • @cyrilanisimov
      @cyrilanisimov 29 วันที่ผ่านมา

      @ я не очень понимаю, как это возможно - аби у языков совсем разный. Не ясно, как встраивать си код в сборку. Какие-то костыли в Карго, может и есть. В плюсах и си используется один компилятор и система сборки

  • @cblbopotka3915
    @cblbopotka3915 4 หลายเดือนก่อน

    Хороший разбор. Что скажете о производительности языка D? Мне кажется язык незаслуженно обделён вниманием

  • @konstantinchizhov1419
    @konstantinchizhov1419 4 หลายเดือนก่อน

    В С++ data 2 раза заполняется нулями. std::array инициализирует элементы по умалчанию. std::fill в крнструкторе не нужно. В С быстрее было бы сделать memset для инициализации data.

  • @safocl9768
    @safocl9768 4 หลายเดือนก่อน

    20:54 -- можно хоть один пример платы за абстракции с++? примененные в данном случае ессесна...

    • @XpIOHdeJIb3000
      @XpIOHdeJIb3000 หลายเดือนก่อน

      один пример: в с++ в функции всегда передаётся указатель на this. В с такого нет, соответственно все вызовы короче.

    • @safocl9768
      @safocl9768 หลายเดือนก่อน

      @@XpIOHdeJIb3000 эмм -- а как тогда будет аналогичный код то? в си же вообще передается для таких целей void* или что то подобное (типа указателя на базовый класс...) -- просто делается все ручками.
      ну и что вообще значит "в функции всегда передается this" -- конечно же нет, -- это для нестатических методов только. И тут как раз при этом следует отметить, что компиляторы во многих случаях обязаны девиртуализировать -- тоесть не посещать vtable -- а напрямую вызывать нужный вариант -- чего в си как раз не реализовать никак при динамическом полиморфизме.

  • @doodocina
    @doodocina 4 หลายเดือนก่อน +3

    зачем ставить флаги оптимизации, которые "примерно соответствуют"? если ты не можешь поставить О3 в расте или других языках, это проблемы исключительно этих языков. надо использовать весь потенциал языка в бенчмарке

  • @BumatuHe
    @BumatuHe 4 หลายเดือนก่อน +1

    Все просто - берем задачу в которой то чего зависит деньги или благополучие счета автора видео и спрашиваем он в таких условиях бы писал на каком языке? на С? или С++?;)

  • @DART2WADER
    @DART2WADER 4 หลายเดือนก่อน +1

    Тема модулей крестов не раскрыта))) У меня тестовые проекты в крестах в 1,5-3 раза быстрее собиралось. Но жду полноценной поддержки всех компиляторов и в СМаке. Производительность не проверял. 🤷

  • @CPHNeIIYzeCNjHxA
    @CPHNeIIYzeCNjHxA 2 หลายเดือนก่อน +1

    У Go запускается рантайм в котором есть планировщик горутин и сборщик мусора, из-за этого он столько всего делает. Вообще чтобы уровнять Rust и Go, можно в расте запустить метод main в рантайме tokio и вызывать все с async/await 😂 А так в целом для более объективной картины стоит проводить несколько разных тестов, но я думаю оно примерно так и будет C быстрее всех, Rust и C++ где-то рядом и медленнее всех Go. Но если например использовать в вебе, на каждый реквест ходить в базу и гонять json туда-сюда используя корутины, горутины, футуры и чего там есть асинхронного у C, то результат уже будет совершенно другим, причем даже больше будет завистеть от фреймворков чем от языка.

    • @EugeneLazin
      @EugeneLazin 4 วันที่ผ่านมา

      Чтобы написать на С или С++ то что может сделать новичок на Go нужно иметь довольно высокий уровень. Опять же, Go выбирают не ради производительности, а ради баланса между производительностью, масштабируемостью процесса разработки и продуктивностью разработчиков.
      Rust - хороший язык, но очень сложный если вам нужен Async. В С++20 появился function coloring (есть обычные функции и методы, а есть корутины), в Rust есть function coloring (обычные функции, async функции, unsafe) но плюс есть еще type coloring (есть тип а есть тип + lifetime annotation). И получается что вы пишете код, потом вам нужно сделать что-то асинхронное (начали использовать tokio например) и код нужно переделывать, потом выясняется что типы теперь возвращаются из асинхронных функций и передаются в асинхронные функции и теперь они требуют других lifetime аннотаций либо нужно все делать через Arc/mutex итд. В Go ничего этого нет. Сегментированные стеки, грутины, каналы, memory safety через GC, нет ичключений. Очень низкий когнитивный оверхед на каждую строчку кода.

  • @cyrilanisimov
    @cyrilanisimov 4 หลายเดือนก่อน +1

    Огромный плюс плюсов в том, что можно бесшовно работать с Си кодом. Кроме того, Си код валиден в плюсах

  • @maksimbiriukov5483
    @maksimbiriukov5483 4 หลายเดือนก่อน +2

    Логичнее в списке сравнивать с zig а не с go

  • @Elisha_GG
    @Elisha_GG 4 หลายเดือนก่อน

    Невероятно интересное видео, несмотря на то что я тёмный лес - всё понятно.

  • @litterjunk8632
    @litterjunk8632 4 หลายเดือนก่อน +1

    Чувак, страшную вещь я принес в твой дом: LLVM нынче везде под капотом. А если еще нет, то скоро все равно да.

    • @mikeofs1304
      @mikeofs1304 4 หลายเดือนก่อน

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

  • @GremL1N3500
    @GremL1N3500 4 หลายเดือนก่อน

    Версии языков не указаны :(

  • @psifunction
    @psifunction 4 หลายเดือนก่อน +1

    Удивительно, как lto стал решать, оптимизации на этапе линковки работают когда в проекте больше одного файла, в данном случае весь бенч умещается в один файлик
    Не защищаю никакой язык, это просто инструмент, но все-таки использование unique_ptr в плюсах неоправдано как и нетривиальный std::fill вместо zero инициализации
    В си массив на стеке вообще, тоже нечестно

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn 4 หลายเดือนก่อน +1

      автор видимо сначала скомпилил код в объектник, а уже потом его в бинарник слинковал, соответственно компилятор не смог сделать оптимизации, т.к. не знал можно ли что-то выкинуть или оно будет использоваться в других объектниках... Там и сами бэнчмарки через одно место написаны, в общем такие себе результаты, вообще не релевантные...

  • @vladimirchizh8853
    @vladimirchizh8853 4 หลายเดือนก่อน

    Так же заполнение массива нулями в конструкторе С++ через std::fill не очень эффективно, быстрее будет использовать std::memset

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn 4 หลายเดือนก่อน +4

      быстрее будет инициализация через `{}`, но автор видимо намеренно написал корявый код...

  • @bsprspktvnk
    @bsprspktvnk 4 หลายเดือนก่อน

    а поч для го не было принято оптимизаций

  • @arnoldkurkov48
    @arnoldkurkov48 4 หลายเดือนก่อน

    Кода нет что-ли?

  • @МихаилСмирнов-л5к
    @МихаилСмирнов-л5к 4 หลายเดือนก่อน

    30:39 Не тот размер показан. А то кажется, что бинарник занимает почти МБ

  • @SuperEuro
    @SuperEuro 4 หลายเดือนก่อน

    дилетантский вопрос: Возможно ли, или на сколько правильным может быть создание связки железа и высокоуровнего языка программирования? Т. е. разработать железо под Rust к примеру... максимально оптимизированное, удобное и безопасное. (походу вопрос лежит больше в философской плоскости, "что первично материя или идея" железо или ПО)

    • @animuspexus
      @animuspexus 4 หลายเดือนก่อน

      @@SuperEuro процы разрабатывают с определённым набором команд, в зависимости от философии и спроса. потом на основе этих команд делают ассемблер. а из ассемблера делают примитивы для других языков и вот над этими примитивами уже строится стандартный везде одинаковый с/с++

    • @SuperEuro
      @SuperEuro 4 หลายเดือนก่อน

      @@animuspexus th-cam.com/video/YUd1A1jCF38/w-d-xo.htmlsi=2qmMYoBdtj5Sc3xQ&t=3040 тут немного тему вопроса затронули...

  • @motrl
    @motrl 4 หลายเดือนก่อน

    Насчет ОС на Rust действительно хороший вопрос, а вот если Kubernetes на Rust (или аналог) ? Кто что думает ?

    • @maksimbiriukov5483
      @maksimbiriukov5483 4 หลายเดือนก่อน +2

      Redox же есть на расте

    • @sighupcmd
      @sighupcmd 4 หลายเดือนก่อน

      linux, k8s и js должны сдохнуть как можно скорее. но это вряд ли произойдет, слишком много говна уже накручено поверх этого базового говна

  • @grandlagging0zero175
    @grandlagging0zero175 4 หลายเดือนก่อน

    Спасибо огромное за такое классное видео!
    а что таблицы excel уже заблочили? Нельзя было сразу все полученные данные залить в ячейки и сравнить?

    • @ShiloXyZ
      @ShiloXyZ 4 หลายเดือนก่อน

      Так он же фанат vim какой ещё Эксель. Даже маркдаун-форматированя не положено.

  • @mmilerngruppe
    @mmilerngruppe 4 หลายเดือนก่อน

    30:37 это почти один мегабайт на хеллоуворлд с ассемблерными вставками? моё почтение.

    • @user-ch76tcye4vvuu8
      @user-ch76tcye4vvuu8 4 หลายเดือนก่อน

      потестил на Си без ассемблера, с флагом -O3, размер 16Кб

  • @chexi
    @chexi 4 หลายเดือนก่อน

    а если добавить к сравнению carbon и zig? я так понял они позиционируются как "лучше чем си/си++"

    • @ram0973
      @ram0973 4 หลายเดือนก่อน

      И vlang в придачу с D :) Но смысл видео как бы намекает. Кстати там Завалишин Д.К. как-то давно начал писать ОСь Фантом, которая не переключает контекст, интересно что там получилось

    • @chexi
      @chexi 4 หลายเดือนก่อน

      @@ram0973 так и что такое сравнение должно показать? если это шутка то я её не догнал, я не программист даже)

    • @redtreatrick5265
      @redtreatrick5265 4 หลายเดือนก่อน

      Может тогда уже сразу низкоуровневые языки использовать?

    • @RichardLofty
      @RichardLofty 4 หลายเดือนก่อน +2

      Карбон не существует

    • @saddoomer
      @saddoomer 4 หลายเดือนก่อน

      ​@@RichardLofty он в разработке

  • @amonix4035
    @amonix4035 4 หลายเดือนก่อน

    Причем тут распараллеливание в случае Go?) Авторы вы корутины не исспользуете у вас нет паралельного кода в бенчмарке. Видео какой то поток слабосвязанных мыслей и домыслов.

  • @animuspexus
    @animuspexus 4 หลายเดือนก่อน

    чувак, если у тебя вызывает сомнение идея о том, что general-purpose programming language может и должен быть использован для всего, то у тебя проблемы.

  • @brkbrkvjk
    @brkbrkvjk 3 หลายเดือนก่อน

    У меня выгрузка из локальной базы оркл на го значительно быстрее раста получилось. Код простейший

  • @RichardLofty
    @RichardLofty 4 หลายเดือนก่อน +7

    Насчет "почему плюсы медленнее раста".
    Плюсы - вечно растущая раковая опухоль, которая руководится не логикой и здравым смыслом, а комитетом "ученых" которые в своей жизни ничего не написали НЕ на белой доске.
    Раст - такая же опухоль, растет так же, руководится такими же людьми, и даже хуже, ибо они еще и политические активисты.
    Но раст моложе, опухоль вечнорастущая и поглощающая, еще только начала расти.

    • @SunHail8
      @SunHail8 4 หลายเดือนก่อน

      чудовищно ФЪ точку :)) а ещё стоит отметить, что у ржаки нет нормальной модульности == вся херь пихуарится в один бинарь == на больших проектах ржака просто обречена дичайше лагать. в той же плюхе мало-мальски приличная раскладка проги в длл-ки даёт возможность настроить её по скорости / расходу озу / стабильности.

    • @wennerryle1768
      @wennerryle1768 2 หลายเดือนก่อน

      ​@@SunHail8можно сделать отдельную либу которая будет компилироваться лишь один раз при изменениях прямо в проекте

    • @SunHail8
      @SunHail8 2 หลายเดือนก่อน

      @@wennerryle1768 во ржаке модульность делать можно, но практически получается сиха на препроцессоре ржаки + никто не может объяснить "зачем надо было лепить горбатого, когда уже давно слепили аду???". а ещё стоит помнить, что у ржаки плоховато с обратной совместимостью. куча публики орёт как ржака хороша, но толком на ней никто не пишет, а процентов 50 проектов давно заброшены :))

    • @wennerryle1768
      @wennerryle1768 2 หลายเดือนก่อน

      @@SunHail8 ну, как говорится, если на язык ругаются - значит им пользуются

    • @SunHail8
      @SunHail8 2 หลายเดือนก่อน

      @@wennerryle1768 для малых проектов попрёт, но альт хватает :) тот же typescript сильно посимпатичней :))

  • @vktiamo
    @vktiamo 4 หลายเดือนก่อน

    viddy уже на rust :D

  • @danilakhtarov
    @danilakhtarov 4 หลายเดือนก่อน +3

    Я слышал правильно называть кланг, а не силанг

    • @nanoqsh
      @nanoqsh 4 หลายเดือนก่อน +5

      Правильно называть шланг

    • @cenntraru
      @cenntraru 4 หลายเดือนก่อน

      клЭнг

    • @Kerojey
      @Kerojey 4 หลายเดือนก่อน +6

      Я слышал, что всем насрать, как называть clang

  • @bigtown2012
    @bigtown2012 4 หลายเดือนก่อน +1

    Пробовал полюбить rust, не вышло. Для бэка он не такой удобный как Go. Производительности для бэка на Go более чем хватает. Rest запросы и походы в БД сводят на нет выигрыш в производительности. Как системный язык Rust не годится из-за своей параноидальной "безопасности". Системный язык должен позволять делать небезопасные трюки. В rust-е приходится обрастать unwrap-ами и переходит unsaved секции, что сводит его не нет. Плюсом C очень хорошо соотносится с ассемблером. Rust имеет высокоуровневые абстракции, которые сложно понять как развернуться в asm. Что то среднее где верховодит С++, rust делает гораздо хуже. Сделали эксперимент с лидом. Задача сводилась к общему указателю. Во первых в расте пришлось обрастать костылем в виде arс, и количество строк было раза в два больше чем в С++. И на мой взгляд синтаксис rust-а просто ужасен!!! Для вновь создаваемого языка, для которого не нужно тащить ни какого легаси, это просто факап.

    • @sfera888
      @sfera888 4 หลายเดือนก่อน +1

      Зависит от того какие задачи решаешь. Если Бэк с CRUD простенький то конечно Go. Если более менее сложная бизнес логика или требования по перформансу или интеропу - Го уже не катит. Если системное программирование - Логгеры, Протоколы, операционные системы, то это конечно Rust, никакой Go там и близко не стоял. Go может подойти для Control Plane в облаках но Data Plane это или Rust (linkerd) или С++ (Envoy). Кстати создатель Envoy сказал что он охотно бы переписал свой продукт на Rust, а Go вообще с проекта выкинул. То, с какой скоростью CloudFlare выкидывает Go и Nginx и заменяет это на Rust, тоже кагбе намекает. Но если задача - типичный бэк CRUD - то гошечки хватит с головой.

    • @mikeofs1304
      @mikeofs1304 4 หลายเดือนก่อน +1

      То что ты считаешь Arc костылем в принципе все о тебе, и о твоем понимание Rust-а говорит, ггг

    • @bigtown2012
      @bigtown2012 4 หลายเดือนก่อน

      @@mikeofs1304 Я что то упустил тот момент, когда мы с вами на "ты" перешли. Судя по изложению, вы являетесь очень юным дарованием. Я понимаю что уважение к старшим у вашего поколения скорее всего исключение нежели правило. Это первая часть вопроса. Попробуем теперь разобраться со вторым. Я бы конечно спросил что такое raw pointer и про внутреннее устройство arc. А также immutable идеологию Rust-а, но уверен что в ответ получу копипасту из чата GPT.

    • @mikeofs1304
      @mikeofs1304 4 หลายเดือนก่อน

      @@bigtown2012 Я думаю, если бы ваша светлость писала бы в каждом коментарии свой возраст, список титулов и заслуг, то таких ситуаций можно бы было избежать. Искренне сожалею, бью тройной поясной поклон и прошу прощения. ЗЫ Immutable далеко не в расте появилась

  • @SirVestniK
    @SirVestniK 4 หลายเดือนก่อน

    Столько странных рассуждений о более консервативных оптимизациях в gcc по сравнению с llvm...
    А потом автор демонстрирует первопричину этого своего бреда, показав команды компиляции. Только `-O2` на gcc и `-O3 -march=native` у clang.
    Видимо этот бутерброд вкупе ещё и с `-flto` упорно выискивался с целью получить перф не хуже раста у плюсов и си при использовании clang.
    Реальную причину разницы в перфе почти гарантировано надо в коде искать. rustc без эквивалентов -march=native и без lto запускался.

  • @2-ph3np
    @2-ph3np 4 หลายเดือนก่อน

    Хватит повторять повторять

  • @RichardLofty
    @RichardLofty 4 หลายเดือนก่อน +2

    Все что использует ЛЛВМ - априори не может быть эффективнее С.
    Таким макаром можно просто напрямую программировать на ЛЛВМ, без прослойки "псевдо-языка" между.
    Что некоторые люди делают прекрасно.
    По этому когда вы пишете на "расте" вы на самом деле просто программируете ЛЛВМ что бы он делал что вам нужно.
    Просто напрямую на ЛЛВМ писать очень громоздко и не удобно.

    • @doodocina
      @doodocina 4 หลายเดือนก่อน +4

      почему не может? ллвм может узнает больше паттернов или использует более продвинутый кодогенератор, такое точно не исключено.
      но что исключено - интеллект автора видео. "ой, у раста нету О3, поставлю ка я О2 на си, чтобы показать, какой раст быстрый"....

    • @Александр-ф9в4ю
      @Александр-ф9в4ю 4 หลายเดือนก่อน +6

      Какую же ты бредоту несёшь, давай эту бредоту развивать будем. Программируя на ЛЛВМ или С вы в конечном итоге программируете процессор. Просто напрямую на процессор писать очень громоздно и не удобно.
      Про особенности разных ЯП конечно ты ничего не слышал.

    • @mikeofs1304
      @mikeofs1304 4 หลายเดือนก่อน

      @@Александр-ф9в4ю Походу его в школе какие то любители раста обижают больно. Других объяснений нет

  • @RichardLofty
    @RichardLofty 4 หลายเดือนก่อน +6

    Раст к сожалению бесполезен для человека с уровнем интеллекта выше температуры в комнате.
    Не смотря на все заявления, он абсолютно НЕ безопасен.
    И в нем абсолютно так же можно сотворить кучу грязи.
    При этом абстракции которые построены поверх базы, настолько лимитирующие, что при малейших изменениях в лайфтаймах нужно менять структуру половины всей программы.
    Я уж молчу про то, что в стабильных версиях раста до недавнего времени сидели в открытую баги с памятью которые анулировали всю его "защиту".
    В итоге суть какая, очень интересно, концепт лайфтаймов и борроу чекера - забавная новая методика.
    Которые к сожалению абсолютно ни чем не помогают нормальному человеку, а даже делают хуже, замедляя его работу, во всех смыслах, и дев тайм, и ран тайм самой программы.
    Ах да, не забываем про время компиляции, но тут уже и раст и плюсы лицом упали в лужу.

    • @voidptr_t
      @voidptr_t 4 หลายเดือนก่อน +7

      тряска на половину комментариев. выйди на улицу, траву потрогай 😕

    • @RichardLofty
      @RichardLofty 4 หลายเดือนก่อน +1

      ​@@voidptr_t
      Ох извините, что вас заставили читать больше трех слов.
      Тряска - где и от чего?
      Я просто комментирую по ходу просмотра видео.
      Можешь процетировать любой мой комент и показать мне где я не прав.
      Хотя бы один.

    • @Александр-ф9в4ю
      @Александр-ф9в4ю 4 หลายเดือนก่อน +7

      Раст к сожалению бесполезен для человека, с уровнем "насрать кусок говна и забыть", потому что насрать кусок говна и забыть в целом получится, но если потом с этой кучей говна придётся работать, то будут плак плак, ой ничего не работает, сложна. Дайте заговнокодить побыстрому багованное говно на С 🤣

    • @voidptr_t
      @voidptr_t 4 หลายเดือนก่อน +5

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

    • @sweetcapitan5690
      @sweetcapitan5690 4 หลายเดือนก่อน +13

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

  • @hizatageblank
    @hizatageblank 4 หลายเดือนก่อน

    интересный ролик, только я вообще на петухоне пишу)