CodeNeuron
2.86K subscribers
41 photos
7 videos
4 files
59 links
Advancing Coding and Science
Topic: https://t.me/Code_Neuroncom
Download Telegram
مفسر Wasm حدود ۲.۲ برابر سریع‌تر شده؛ و اینجا مهمه که V8 همیشه کمکتون نمی‌کنه.

داخل مرورگر، WebAssembly معمولاً با JIT اجرا می‌شه و به همین دلیل خیلی از فرانت‌اندکارها اصلاً به Interpreter فکر نمی‌کنن.

اما وقتی Wasm از محیط مرورگر خارج می‌شه و وارد Pluginها، Edge Functionها، اپلیکیشن‌های iOS و Sandboxها می‌شه، شرایط فرق می‌کنه. JIT ممکنه به‌خاطر محدودیت‌های امنیتی ممنوع باشه یا اصلاً از نظر مصرف حافظه مناسب نباشه.

اینجاست که Wasmi، یک Interpreter نوشته‌شده با Rust، وارد می‌شه.

طبق بنچمارک‌های خود پروژه، نسخه 2.0 در میانگین هندسی تست‌ها حدود ۲.۲ برابر سریع‌تر از نسخه 1.0 شده.

پشت این افزایش عملکرد چند تغییر مهم وجود داره؛ از جمله چهار حالت مختلف برای Dispatch به‌جای یک switch-loop، یک IR جدید با رجیسترهای accumulator و ساختار CodeMap که باعث می‌شه هنگام فراخوانی تابع حتی یک Lookup هم انجام نشه.

نکته جالب دیگه اینه که فعال کردن SIMD دیگه مثل قبل باعث افت عملکرد کدهای معمولی نمی‌شه؛ در نسخه 1.0 این قابلیت حدود ۸٪ هزینه عملکردی داشت.

بنچمارک‌ها هم از طریق ریپازیتوری wasmi-benchmarks قابل تکرارن و عملکرد Wasmi با پروژه‌هایی مثل Wasm3، WAMR و Wasmtime Pulley مقایسه شده.

در واقع، این آپدیت بیشتر برای جاهایی مهمه که نمی‌تونیم روی JIT موتورهایی مثل V8 حساب کنیم؛ جایی که یک Interpreter سریع مستقیماً روی Performance تأثیر می‌ذاره.


#wasm
#performance
❤1