021-88926351
info@ezHost.ir
ورود ثبت نام
Facebook
LinkedIn
Instagram
  • صفحه نخست
  • ثبت دامنه
  • میزبانی وب
    • هاست لینوکس
      • حرفه ای ایران
      • حرفه ای اروپا
      • اقتصادی (لیکونومی)
      • هاست ویژه وردپرس
    • هاست ویندوز
      • حرفه ای ابری ایران
  • سرور مجازی
    • ایران
    • خارج
      • آلمان
      • فنلاند
    • سرور مجازی بایننس و ترید
  • سرور اختصاصی
    • خارج از کشور
      • سرور هلند
  • نمایندگی فروش
    • هاست لینوکس
      • داخل کشور
      • خارج از کشور
    • هاست ویندوز
      • داخل کشور
    • نمایندگی دامنه بین المللی
    • همکاری در فروش
  • سایر خدمات
    • گواهینامه SSL
    • طراحی وب سایت
  • ایزی هاست
    • ورود به ناحیه کاربری
    • وبلاگ ایزی هاست
    • شماره حساب ها
    • فرصت های شغلی
    • سنجش رضایتمندی
    • درباره ما
    • تماس با ما

عملکرد JIT

نوامبر 17, 2021هـ. حسینیدانشنامهبدون پیغام

JIT چیست

به عبارت ساده، JIT (just-in-time compilation) تکنیکی است که امکان کامپایل یک برنامه در کد ماشین را بلافاصله قبل از اجرای آن فراهم می کند. در واقع، این رویکرد منجر به اجرای کد، بسیار سریع‌تر می‌شود. گاهی اوقات JIT به عنوان یک میانگین طلایی بین انعطاف پذیری در توسعه کد برنامه و عملکرد زمان اجرا نامیده می شود.

عملکرد

 همانطور که قبلاً اشاره کردم، تا به امروز عملکرد بهتر PHP بر اساس OPCache با استفاده از به اصطلاح (OPCode) بود که که یک قطعه کد از پیش کامپایل شده در قالب دستوراتی است که برای اجرا به پردازنده داده می شود. کد ذخیره شده می تواند تقریباً بلافاصله توسط یک ماشین مجازی اجرا شود. با این حال، هنوز کد ماشین بومی نیست.

JIT کد ماشین واقعی را ارائه می دهد که به گونه ای پیاده سازی شده است که با OPCache کار کند. هنگامی که اسکریپت برای اولین بار راه اندازی می شود، اگر قبلاً در OPCache ذخیره شده باشد، بلافاصله برگردانده شده و کامپایل می شود (اگر قبلاً نبوده است). با این حال، در صورتی که اسکریپت هنوز کش نشده باشد، ابتدا مانند گذشته کل فرآیند تولید OPCode را طی می کند. کل فرآیند به طور کامل در نمودار زیر نشان داده شده است.

پیکربندی JIT

اگر فکر می کنید JIT فقط بخشی از زبان / مترجم است و به طور خودکار کار می کند، در اشتباه هستید. متأسفانه برای استفاده از آن، به پیکربندی اضافی نیاز دارد، که در نگاه اول واضح به نظر نمی رسد. کل عملیات در فایل پیکربندی php.ini انجام می شود که برای برنامه نویسان PHP شناخته شده است.

اولین نکته مهم این است که JIT فقط زمانی کار می کند که OPCache فعال باشد. هر نصب پیش فرض PHP دارای این مقدار (opcache.enable) است که بلافاصله روی ۱ تنظیم می شود. سپس، برای استفاده کردن از JIT، باید دو پارامتر را تنظیم کنیم:

  • opcache.jit_buffer_size
  • opcache.jit

اولین مورد (opcache.jit_buffer_size) مسئول تعریف مقدار حافظه ای است که می خواهیم برای کامپایل کد اختصاص دهیم. تنظیم مقدار حاقظه بسیار ساده است:

در مورد پارامتر دوم (opcache.jit)، اساساً به شما می گوید که JIT چگونه قرار است کار کند. برای اجرا، اجازه دهید با یک مثال شروع کنم:

بله، من نیز از مقدار عددی شگفت زده شدم. در ابتدا فکر کردم که این یک نوع بیت ماسک یا چیزی است. با این حال، وقتی RFC را تجزیه و تحلیل کردم، که در آن جزئیات بیشتری در مورد گزینه‌های فردی پیدا می‌کنیم، مشخص شد که هر یک از این ارقام به طور جداگانه یک مقدار پیکربندی خاص است. بنابراین من می خواهم سه مقدار پیکربندی را ارائه دهم که ممکن است بیشترین استفاده را داشته باشند. آنها میانبری برای کمک به توسعه دهندگان برای تنظیم حالت مورد نظر هستند.

  • opcache.jit = 1205 –  همه کدها JIT کامپایل شده است
  • opcache.jit = 1235 –  فقط بخش های کد انتخاب شده (بر اساس استفاده نسبی آنها) به کامپایل JIT ارسال می شود
  • opcache.jit = 1255 –  کد برنامه برای کامپایل توسط JIT پیگیری می شود و قسمت های انتخابی کد به کامپایلر منتقل می شود.

عملکرد JIT در برنامه های کاربردی وب واقعی

هر توسعه دهنده خوبی باید بداند که مهمترین عاملی که بر عملکرد برنامه تأثیر می گذارد، کیفیت کد آنهاست. یکی دیگر از عوامل به همان اندازه مهم، انتخاب فناوری هایی است که کل پشته آن را تشکیل می دهند و نحوه توسعه آنها. در مورد PHP، OPCache یک انقلاب بود. با این حال، (JIT) علیرغم تبلیغات گسترده رسانه ای به نظر نمی رسد که نقطه عطف باشد، به خصوص برای برنامه های کاربردی وب. چرا؟

JIT با هدف کامپایل دسته ای از کدها معرفی شد که در معرض نوسانات قابل توجهی نیستند. تکه‌های کدی که بیش از یک بار اجرا می‌شوند را شناسایی کرده و بر اساس آن کامپایل می‌کند. همانطور که احتمالاً قبلاً حدس می‌زنید، اجرای کد در حین رسیدگی به یک پرس و جو یا درخواست یک برنامه وب به متغیرهای بسیار زیادی بستگی دارد و در واقعیت، معلوم می‌شود که این تکه‌های کد یکسان تعداد کمی هستند. علاوه بر این، در برخی موارد ممکن است تعداد آنها به قدری کم باشد که به جای سرعت بخشیدن به برنامه، JIT در واقع به دلیل بار اضافی کامپایل کردن کد، سرعت آن را کاهش دهد.

در یکی از تست‌های عمومی موجود این پروژه بر اساس چارچوب لاراول و شرح داده شده در مقاله medium.com، می‌توانیم متوجه شویم که اجرای آن در PHP 8 با JIT تنها کمی عملکرد را افزایش می‌دهد:

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

JIT چه فایده ای دارد؟

معرفی یک کامپایلر JIT در PHP در واقع گامی برای باز کردن زبان به روی امکانات جدید است. JIT به طور قابل توجهی عملکرد اجرای کد را در برنامه های فشرده CPU بهبود می بخشد. این در مورد استفاده از PHP برای اهداف کاملاً جدید است، مانند یادگیری ماشینی، محاسبات پیچیده ریاضی، یا پردازش/مدل سازی تصویر ۲D/3D.

مزایا و معایب

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

از سوی دیگر، JIT در شکل فعلی خود قادر به بهبود قابل توجهی عملکرد برنامه های کاربردی وب نیست و در برخی سناریوهای خاص حتی ممکن است منجر به عملکرد بدتر از قبل شود. نحوه عملکرد آن نیز می تواند بر روند توسعه تأثیر بگذارد و اشکال زدایی کد را دشوار کند، زیرا برخی از مشکلات شناخته شده با ابزار xDebug وجود دارد. JIT همچنین به دانش پیکربندی اضافی از توسعه دهندگان نیاز دارد.

نتیجه گیری

در Droptica، جایی که ما خدمات دروپال را ارائه می دهیم، پشتیبانی دروپال و تیم ما شامل بسیاری از برنامه نویسان PHP است، می دانیم که اگرچه JIT در جهان کاملاً جدید نیست (فیس بوک و HHVM آنها پیشرو بودند)، به زودی به بخشی از زبان اصلی تبدیل خواهد شد. با انتشار PHP 8. JIT قصد دارد عملکرد اجرای کد را بهبود بخشد و امکانات استفاده از خود زبان را گسترش دهد. فکر می‌کنم در سال‌های آینده باید مراقب توسعه آن باشیم، که می‌تواند نتایج بهتری به‌ویژه در زمینه برنامه‌های کاربردی تحت وب داشته باشد.

Premium WordPress Themes Download
Free Download WordPress Themes
Free Download WordPress Themes
Download WordPress Themes
free download udemy course
download lenevo firmware
Premium WordPress Themes Download
free online course
برچسب: JIT, OPCACHE, PHP, PHP8

مطالب پیشنهادی

PHP چیست و دلایل استفاده از آن ؟

سپتامبر 3, 2015علیرضا طبرزدی

مقابله با حملات تزریق کد

مارس 11, 2015مدیر سایت

آشنایی با phpMyAdmin

سپتامبر 24, 2015مدیر سایت

دیدگاهتان را بنویسید لغو پاسخ

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

ورود به ناحیه کاربری
مرکز آموزش

تمام حقوق این سایت متعلق به ایزی هاست می باشد
Posting....