Микрооптимизации в мире .NET. Николай Балакин .NET Fest 2019

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024

Комментарии • 7

  • @oliverreviews8496
    @oliverreviews8496 4 года назад

    Каким образом JS и Node.js в одной колее с .net и Java?
    Вроде как JS и node.js однопоточный, и суть работы Event Loop'a используется только в JS. И Java, и .net же многопоточны, а JS - нет. Или я не прав?

    • @felixfelicis5818
      @felixfelicis5818 4 года назад

      Да, плохое сравнение. JIT-компиляторы .NET и java эмитят очень даже производительный код, и в многих задачах оптимизация сравнима с нативным кодом от С++. Хромовский V8 для JS тоже использует JIT, но из-за специфики самого языка (т к динамической типизации) JS заметно позади, потому что под капотом нужно сделать много работы, следовательно машинного кода генерируется больше (для наглядности - можно глянуть через ILDASM сколько груза генерирует dynamic в C#, это - цена удобства).
      И да, ванильный JS - однопоточный, с глобальным синхро-мутексом.

    • @oliverreviews8496
      @oliverreviews8496 4 года назад

      @@felixfelicis5818 Кстати говоря об производительности, минус JS еще в том, что нет доступа к памяти, как Heap в .net'e. Думаю это тоже сказывается достаточно сильно

    • @felixfelicis5818
      @felixfelicis5818 4 года назад

      @@oliverreviews8496 Это не особо большой минус. Среда выделит тебе память когда надо и сама почистит. А чтобы я лично каждый день вызывал Marshal.AllocHGlobal - то нет, иногда для специфичных задач.

    • @oliverreviews8496
      @oliverreviews8496 4 года назад

      @@felixfelicis5818 Ну сборка мусора есть и в .net'e и в JS. Ну ладно, это все частности. Но в одном мы сошлись, что JS не должен сравниваться с Java и .NET'ом)

    • @BalakinMykola
      @BalakinMykola 2 года назад

      (весьма оперативный ответ)
      Я не думал тут утверждать, что они похоже во всем. Тут шла речь только лишь о том, что и .NET, и Java, и JS не компилируются в нативный код и, обычно, в промежуточном представлении кода не выполняется глубоких оптимизаций того уровня, который, к примеру, делает gcc или Intel C++ Compiler.