Как уменьшить размер dll / wasm, скомпилированных aspnet / blazor? - PullRequest
0 голосов
/ 05 октября 2018

Я заметил, что размер файла *.wasm, скомпилированный Rust, является приемлемым.Однако минимальный HelloWorld, скомпилированный AspNet/Blazor, займет почти 2,8 МБ.

mono.wasm       1.75MB
mscorlib.dll    1.64MB
*.dll           ....

Если я правильно понимаю, mono.wasm - это виртуальная машина, которая работает в браузере и запускает DLL, которую мы пишем.Означает ли это, что независимо от того, что мы делаем, мы не можем сделать размер файлов менее 1,75 МБ?Если нет, есть ли способ уменьшить размер файла?

1 Ответ

0 голосов
/ 05 октября 2018

Да, 2,8 МБ - довольно большая полезная нагрузка для приложений «Hello World».Тем не менее, Blazor все еще является экспериментальной технологией, которая еще не готова к использованию.Существует множество причин, по которым сгенерированный вывод в настоящий момент настолько велик:

Ваше текущее приложение работает в интерпретируемом режиме, когда файл mono.wasm отправляет CLR в ваш браузер, позволяя ему выполнять вашу DLL.Более быстрый и эффективный по размеру подход заключается в использовании Ahead of Time Compilation (AOT) , как описано в этой статье .Это позволило бы компилятору убрать все неиспользуемые библиотечные функции, что дает высоко оптимизированный вывод.

Возможности самой среды выполнения WebAssembly весьма ограничены, в будущей версии добавится сборка мусора и другие возможности, которые Blazor сможет использовать напрямую.На данный момент mono.wasm включает в себя собственный сборщик мусора.

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

...