دانستنی‌ها

ارتقای کارایی از JDK ۶ تا JDK ۹

انتشار اولیه نسخه جدید JDK، نسخه ۹ آن، شامل یک بهبود در JDK  به نام JEP 143, Improve contended locking می‌باشد که کارایی مانیتورهای به رقابت گذاشته شده را ارتقا می‌دهد. اما این مساله چقدر صحت دارد.

مانیتورها توسط عبارت‌های synchronized برای قفل کردن دسترسی به یک بلوک از کد استفاده می‌شوند.اگر بلوک synchronized توسط چندین ریسه فراخوانی شود، مانیتور به رقابت گذاشته می‌شود. این مساله می‌تواند به طرز قابل توجهی کارایی را کاهش دهد. بنابراین بیایید بهبود کارایی مانیتورهای به رقابت گذاشته شده را بررسی کنیم.

per_jdk1

این نمودار زمان یک فراخوانی تابع را نشان می‌دهد. عدد کمتر به معنی کارایی بهتر است. این آزمون شامل ۸ ریسه است که به یک بلوک synchronized و به یک مانیتور یکسان دسترسی دارند. شما هم می‌توانید از اینجا دانلود و تست کنید. این تست روی intel i5 و پردازنده ۴ هسته‌ای انجام گرفته است. همانطور که می‌بینید، JDK ۹ کارایی مانیتورهای مورد رقابت را افزایش می‌دهد. حال به یک مقایسه مستقیم بین JDK ۸ و JDK 9 نگاه می‌کنیم.

مقایسه JDK 8 و JDK 9

این نمودار میزان بهبودی که با سوئیچ از JDK 8 به JDK 9 به دست می‌آید را نشان می‌دهد.

jdk8_vs_jdk9

نمودار زمان فراخوانی یک تابع را برای یک مانیتور مورد رقابت توسط ریسه‌های مختلف نشان می‌دهد. همانطور که مشاهده می‌شود کارایی JDK ۹ خیلی کندتر از JDK 8 کاهش پیدا می‌کند.

یک پیشنهاد برای ارتقای کارایی استفاده از قفل‌های بازگشتی به جای بلوک synchronized است. بیایید ببینیم آیا این توصیه برای جاوا۹ هم درست است.

قفل‌های بازگشتی در مقابل Synchronized

در این نمودار کارایی قفل بازگشتی مورد رقابت را با یک مانیتور مورد رقابت برای یک بلوک synchronized مقایسه می‌کنیم:

monitor_vs_lock_8

monitor_vs_lock_9

این نمودارها زمان یک فراخوانی تابع را در ریسه‌های مختلف نشان می‌دهد. همانطور که در JDK 9 مشاهده می‌شود، کارایی عبارت synchronized به سریعی قفل‌های بازگشتی است.

نتیجه گیری

همانطور که مشاهده کردیم، JDK 9 کارایی مانیتورهای مورد رقابت را افزایش داده است. در JDK 9  مانیتورهای مورد رقابت به اندازه قفل‌های بازگشتی سریع هستند.  اما JDK 9 یک طرح بهبود JEP 285, Spin-Wait Hints دارد که کارایی قفل‌ها را بهبود می‌بخشد.

منبع:

https://dzone.com/

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

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

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

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