1. Куча / Говнокод #24300

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    https://habr.com/post/358974/
    "Как обновление Rust 1.26 ускорило мой код в три с лишним раза"
    
    Яркий пример того, как человек не понимает как работает его код.
    И кое-то говорит, что Си - говно

    Запостил: minusinho, 21 Мая 2018

    Комментарии (4) RSS

    • > Долгое время мы параллельно делаем две реализации арифметики: одну на Rust для стабильных сборок и одну со встроенным ассемблерным кодом (который автоматически используется nightly-версией компилятора). Мы так поступаем, потому что храним 256-битные числа как массивы 64-битных чисел,
      > в Rust нет никакого способа умножить два 64-битных числа, чтобы получить результат более 64 бит (так как целочисленные типы Rust только доходят до u64)
      > Это несмотря на то, что x86_64 (наша основная целевая платформа) нативно поддерживает 128-битные результаты вычислений с 64-битными числами.
      > Так что мы разделяем каждое 64-битное число на два 32-битных (потому что можно умножить два 32-битных числа и получить 64-битный результат).

      Какой ЯВУ )))

      > Он делает много лишней работы, по существу, просто чтобы обойти ограничения Rust.
      > Всё изменилось в версии Rust 1.26. Теперь мы можем написать a as u128 * b as u128 — и компилятор будет использовать нативное для платформы x86_64 умножение u64-to-u128

      То есть они настолько анскильные, что даже ворованный llvm (где всё уже есть) им не помог.

      > Хотя это почти наверняка медленнее, чем нативный для LLVM тип i256, но скорость очень сильно выросла.
      Но всё-равно вышла хрюкня.

      >Здесь мы сравниваем с оригинальной реализацией Rust:
      Опять соревнование с инвалидами.

      Это, напомню, ЯВУ специально разработанный 2010х как «новая Сишка/Кресты».
      Ответить
      • А в «Nim» нет таких integer, но зато есть классная библиотека для больших чисел.
        Ответить
      • Я бы всё понял, если бы «Rust» разрабатывали в конце 80-х или в начале 90-х...
        Ответить
        • Меня больше всего бесит что они сохранили эти уебанские сишные значки: * и &.

          И взяли с крестов уебанские же std::bagor
          Ответить

    Добавить комментарий