برنامه نویسی

چرا عملکرد دنیای واقعی با شماره های معیار متفاوت است

هنگام ارزیابی عملکرد یک کتابخانه ، بیشتر توسعه دهندگان به معیارهای منتشر شده متکی هستند.
این معیارها اغلب در مقایسه با رقبا ، دستاوردهای چشمگیر عملکردی را نشان می دهند – گاهی اوقات حتی 5 برابر یا 10 برابر سریعتر.

اما یک نتیجه وجود دارد: این اعداد به طور معمول از جریان های استاتیک و بسیار بهینه شده ناشی می شوند ، که در آن همان اپراتورها و میان افزار به طور مکرر اعمال می شوند.
این امر به موتورهای مدرن JIT اجازه می دهد تا فرایند را به طور کامل بهینه کنند و منجر به تعداد با عملکرد مصنوعی بالا می شوند.


آنچه در سیستم های دنیای واقعی اتفاق می افتد

در سیستم های دنیای واقعی ، به ویژه جریان در مقیاس بزرگ یا سیستم های رویداد محور ، جریان واقعی داده به ندرت ایستا است.

ممکن است اپراتورها یا میان افزار بسته به نوع درخواست ، ساختار داده یا ورودی کاربر تغییر کنند.
انشعاب پویا و تصمیمات در زمان واقعی مانع از بهینه سازی موتورهای JIT می شود.
بافر ، مکث ، از سرگیری و رسیدگی به خطاها بهینه سازی را پیچیده تر می کند.
این ماهیت پویا به طور قابل توجهی اثربخشی سود عملکرد مبتنی بر JIT را کاهش می دهد.


آزمایش من: عملکرد استاتیک در مقابل پویا

من یک آزمایش عملکرد را در یک کتابخانه جریان که ساختم انجام دادم.
در اینجا نحوه کار آن آورده شده است:

من 1 میلیارد رویداد را در دسته های 1 میلیون پردازش کردم.
در آزمون اول ، همان اپراتورها/میانی نرم افزار به طور مداوم در تمام رویدادها اعمال می شد – به حداکثر رساندن بهینه سازی JIT.
در آزمون دوم ، اپراتورها به صورت پویا انتخاب شدند با استفاده از Math.random، شبیه سازی شرایط دنیای واقعی که در آن ممکن است تحولات مختلف در مورد وقایع مختلف اعمال شود.

سناریوی تست اختلاف عملکرد در مقابل RXJS
استاتیک (همان اپراتورها) 8 برابر سریعتر
پویا (اپراتورهای تصادفی) 80 ~ 80 ٪ سریعتر

این به چه معنی است

تفاوت قابل توجه است:

  • در الف جریان کنترل شده و استاتیک، کتابخانه من تمام شد 8 برابر سریعتر از RXJS.
  • اما در یک جریان واقع بینانه و پویا، این مزیت کاهش یافته است فقط 80 ٪ سریعتربشر

این بدان معنا نیست که کتابخانه من کند است – حتی در 80 ٪ سریعتر ، هنوز هم بهتر است.
اما آن را برجسته می کند شکاف عظیمی بین معیارهای مصنوعی و عملکرد در دنیای واقعیبشر


چرا این برای سیستم های سازمانی مهم است

برای سیستم های درجه سازمانی ، عملکرد واقع بینانه اهمیت بیشتری از اعداد مصنوعی دارد.

سیستم های دنیای واقعی تقریباً هرگز جریان داده های کاملاً استاتیک ندارند.
آنها با آنها سر و کار دارند تنظیمات پویا ، ضامن ویژگی ، پردازش خاص درخواست، و بیشتر
در چنین محیط هایی ، بهینه سازی JIT بسیار مؤثر است، ساخت بهره وری معماری خام بسیار مهمتر است.

اگر در حال ساخت یا ارزیابی یک کتابخانه مهم عملکرد هستید ،
اطمینان حاصل کنید که معیارهای شما واقعیت را منعکس می کنند – نه فقط شرایط ایده آل.


فکر بستن

دفعه بعد که یک معیار را می بینید که ادعا می کند “10x سریعتر” ،
بپرسید که چگونه این آزمایش انجام شد.

  • آیا این یک خط لوله کاملاً استاتیک بود؟
  • آیا شرایط دنیای واقعی مانند اپراتورهای پویا ، رسیدگی به خطا و انتقال دولت شامل می شد؟
  • آیا آنها عمداً بهینه سازی های JIT را برای شبیه سازی تولید واقعی مختل کردند؟

ادعاهای عملکرد بدون زمینه می تواند گمراه کننده باشد.
همیشه عمیق تر حفر کنیدبشر


CTA اختیاری (فراخوانی به عمل)

اگر علاقه مند به نحوه ساخت کتابخانه جریان بهینه شده برای شرایط دنیای واقعی هستید ،
Asyncrush و نتایج معیار کامل را بررسی کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا