페이지가로드 될 때마다 브라우저가 Webassembly 라이브러리를 다운로드해야한다는 것이 사실입니까?
아니요, 브라우저는 파일을 캐시 할 수 있습니다. Blazor 앱용 일반 CDN이 트릭을 수행합니다.
이 시스템이 예를 들어 JavaScript로 컴파일 된 React / Vue보다 작동 속도가 빠릅니까?
Blazor 는 웹 어셈블리를 사용합니다. On paper 웹 어셈블리는 js 라이브러리보다 빠르지 만 모든 브라우저에 아직 완성 된 웹 어셈블리 파서가있는 것은 아닙니다. 따라서 브라우저가 현재 최적의 속도로 웹 어셈블리를 실행하지 않을 수 있습니다.
작은 blazor 앱을 만들고 Firefox, chrome 또는 edge에서 실행할 수 있습니다. 대부분의 경우 Firefox는 Chrome 또는 Edge보다 훨씬 빠르게 blazor 앱을 실행합니다. 이는 브라우저 제작자가 여전히 개선해야 함을 의미하며 Firefox도 개선 할 수 있습니다.
앱에서 DOM에 자주 액세스해야하는 경우 웹 어셈블리가 Invokes를 사용하지 않고 DOM에 직접 액세스 할 수 없기 때문에 웹 어셈블리 / Blazor가 모든 JS 라이브러리에 비해 느릴 것입니다 (현재 느립니다. .
Firefox RegisteredFunction.InvokeUnmarshalle
에서 빈 메서드에 대한 10,000 번의 호출은 250ms가 걸리지 만 크롬과 에지는 내 PC에서 2400ms 이상을 필요로합니다. ' 순수 JS에서는 동일한 시나리오에 대해 10 밀리 초 미만이 걸립니다.
또한 현재 구현 Blazor에는 브라우저 웹 어셈블리 엔진 위에 자체 MSIL 엔진이 있습니다. 즉, Blazor 프로젝트를 실행하기 위해 작업하는 두 명의 인터프리터가 있습니다. 마치 두 명의 번역자가 대화를 대신 해석하는 것처럼 말입니다. 현재 Microsoft는 아직 출시되지 않은 AOT 컴파일러를 개발 중입니다. 출시되면 Blazor는 현재 구현보다 훨씬 빠릅니다.
http://www.mono-project.com/news/2018/01/16/mono-static-webassembly-compilation/
웹 어셈블리가 웹 개발의 미래라고 안전하게 가정 할 수 있지만 현재로서는 Blazor의 미래에 대해 아무 말도 할 수 없습니다. 문서상 Blazor는 어떤 프레임 워크보다 빠를 수 있지만 이론을 실용화하려면 웹 어셈블리 관리자, 브라우저 개발자, Microsoft 및 커뮤니티의 헌신이 필요합니다.
2018 년 7 월 10 일 업데이트
WebAssembly 저장소에 새로운 제안이 있습니다.
WebAssembly가 DOM을 직접 처리하도록 허용합니다.
https://github.com/WebAssembly/proposals/issues/8
GC를 사용하는 WebAssembly에 대한 참조 유형. https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md
위의 두 제안은 앞으로 DOM과 웹 어셈블리 간의 훨씬 더 빠른 상호 작용을위한 길을 열 것입니다. IOW Blazor는 앞으로 훨씬 더 빨라질 것입니다.
업데이트 2018 년 10 월 17 일
Firefox 팀은 JS-> WASM 호출에 JS-> JS 메소드 호출만큼 빠르게 도달 할 수있었습니다. 현재 FireFox는 WebAssembly 지원과 관련하여 다른 브라우저보다 훨씬 앞서 있습니다.
https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/