Pull to refresh

Comments 9

Моя тестовая реализация MessagePack-а работала на ~20% быстрее чем neuecc/MessagePack-CSharp, а более быстрого сериализатора я пока не видал.

Я то думал что там реализована генерация IL кода, что может в теории работать даже быстрее кода на C#:


  • Utilize dynamic code generation to avoid boxing value types. Use AOT generation on platforms that prohibit JIT.
  • Heavily tuned dynamic IL code generation to avoid boxing value types. See DynamicObjectTypeBuilder. Use AOT generation on platforms that prohibit JIT.

Генератор C# кода там тоже есть как раз для Unity, тоже на основе Roslyn, Pre Code Generation(Unity/Xamarin Supports).


If you want to avoid generate cost or run on Xamarin or Unity, you need pre-code generation. mpc.exe(MessagePackCompiler) is code generator of MessagePack for C#. mpc can download from releases page, mpc.zip. mpc is using Roslyn so analyze source code.
Я то думал что там реализована генерация IL кода, что может в теории работать даже быстрее кода на C#

Сейчас, у меня нет точного ответа за счет чего получился буст. То что сразу просается в глаза, это возможность более полноценого inlining-а методов. В моей реализации у компилятора больше места где развернутся, поскольку все реально извесно на этапе компиляции.

Генератор C# кода там тоже есть как раз для Unity, тоже на основе Roslyn, Pre Code Generation(Unity/Xamarin Supports).

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

Запустил бенчмарк с кодогенерированым MessagePack — стало на 10% медленей)
То что сразу просается в глаза, это возможность более полноценого inlining-а методов.

А там разве не испольуется AggressiveInlining для критичный методов? Хотя не совсем понимаю зачем его использовать, если jitter по идее и так может инлайнить маленькие методы если посчитает нужным.

А на GitHub не планируете выложить наработки с тестами? Было бы неплохо.


UPDATE: увидел ссылку на реп, правда не сразу.

А вы проверяли свой проект на Rider? Когда на вожу на вызов метода, подчёркнутый красным — выводит «Simple reflection is not ready». При нажатии «Generate simple reflection» ничего не происходит.
Sign up to leave a comment.

Articles