Posted on نوشتن کامنت

Node.Js در مقابل PHP: نبرد برتری و بقا

Node.js-vs-PHP-Performance

برای این نبرد به چه چیزهایی نیاز است؟

قبل از اینکه ما به جنگ Node.js در مقابل PHP برویم، ابتدا باید بدانیم چرا این بحث در حال حاضر در جامعه توسعه دهندگان، به ویژه برای توسعه دهندگان بک-اند مطرح است. این همه با افزایش بی نظیر تقاضای کاربران برای برنامه های گوشی هوشمند آغاز شد. App Store اپل نزدیک به ۲ میلیون از این برنامه ها است، در حالی که Google Play دارای بیش از ۲٫۲ میلیون نرم افزار است. موفقیت برخی از برنامه های اجتماعی محبوب، بازی ها و برنامه های پیام رسانی باعث شده است که برنامه نویسان با تکنولوژی بک-اند جدید سازگار شوند که می تواند همزمان چندین درخواست را انجام دهد. میلیون ها نفر از کاربران انواع داده های بسیاری را از برنامه های گوشی های هوشمند خود مبادله می کنند، برای پردازش چنین مقدار زیادی داده شرکت ها به شدت زیرساخت های بک-اند خود را برای قوی تر و مقیاس پذیر تر شدن در نظر می گیرند. با این چشم انداز از یادگیری ماشین و داده های بزرگ و به این سرعت توسعه ، برنامه نویسان باید به پاسخگویی نسبت به آن سطح خود را ارتقا دهند.

گروه های تکنیکی برای افراد غیر فنی

  • Front-End: فرانت-اند می تواند یک برنامه موبایل یا وب سایت باشد. هر نرم افزاری که می توانید آن را مشاهده، لمس و استفاده کنید، از تلفن یا رایانه خود ،فرانت-اند برنامه نامیده می شود. به عنوان مثال، برنامه های آندروید که در گوشی های هوشمند خود استفاده می کنید.
  • Back-end: این بخش نرم افزاری است که در پشت صحنه کار می کند تا قسمت فرانت-اند را با تصویر یا داده های ذخیره شده در سمت سرور تغذیه نماید. سرور یک ماشین با قابلیت پردازش و ذخیره سازی خاص (مانند پایگاه داده) است که می تواند به اینترنت متصل شود و با توجه به درخواست های فرانت-اند پاسخ دهد.

تکنواوژی های محبوب بک-اند

فرانت-اند یک برنامه وب سایت / تلفن همراه تنها به این دلیل امکان پذیر است که نیازهای آنها توسط فن آوری های بک-اند پشتیبانی می شود. بک-اند یک وب / اپ شامل یک سرور، یک برنامه و یک پایگاه داده است. یک توسعه دهنده بک-اند تکنولوژی را تولید می کند که اجزای آن را قادر می سازد که با کمک هم، رابط کاربری وب سایت / برنامه در وهله اول حتی وجود داشته باشد.

بک-اند

  • زبان برنامه نویسی سمت سرور: مانند PHP، Ruby، Python، Java، .Net و Node.js
  • پایگاه داده: MySql (RDBMS)، NoSql (پایگاه داده پویا) مانند MongoDB، DynamoDb و غیره.

Node.js در برابر PHP: نبردی که بر سر زبان هاست

در برنامه نویسی سمت سرور، PHP افسانه ای بوده است و جاوااسکریپ پیش از این برای کار با PHP در نظر گرفته است، که پی اچ پی برای تمام وظایف سمت سرور در بین پورت ۸۰ و پایگاه داده (MySQL) کار می کرد و JS به ظاهر سایت مربوط می شد و کمی مدیریت رویداد در مرورگر وب. اکثر CMS های محبوب به شدت بر روی PHP برای انجام تبادلات سرور متکی هستند، اما با ظهور چارچوب Node.js در سال ۲۰۰۹ (که توسط رایان دال ساخته شده است) سناریو تغییر کرد و دوستان به رقبا تبدیل شدند و نبرد برای برتری و بقا آغاز شد. آنها هر دو در حال حاضر بازی تاج و تخت برای به دست آوردن ذهن توسعه دهنده، یکی از قهرمان فوق العاده است که میراث و تجربه در پشت آن و یکی یک ستاره پرفروغ است که دارای سرعت و برتری بیش از آن همتای قدیمی است.

بیایید آنها را در برابر پارامتر زیر قرار دهیم و برندگان را بر اساس پارامتر عملکردی درک کنیم.

عملکرد بهینه سرور:

انتخاب PHP یا Node.js کاملا یک تصمیم است که بر اساس نیاز برنامه / وب سایت تعیین می شود، اگر ما نیاز به لود کردن داده های سنگین داشته باشیم و باید چندین اتصال همزمان را انجام دهیم که نیاز به زمان واکنش سریع در نرم افزار مصرف کننده داشته باشد، Node.js دست بالا را دارد. هرچند در سمت دیگر در فریمورک های PHP پیشرفت هایی وجود دارد که می تواند ارتباطات همزمان را نیز داشته باشد، هنوز هم Node.js برنده ی خوبی برای من است. Node.js زیرساخت های غیر بلوک و به طور مساوی مبتنی بر رویداد برای اسکریپت برنامه های بسیار همزمان را فراهم می کند.

همانطور که در برخی گزارش ها، در بحث مقیاس پذیری زیرساخت های Backend تلفن همراه LinkedIn آمده : این شرکت قادر به حرکت از ۳۰ سرور به کمتر از سه شده، در حالی که هنوز به اندازه کافی برای مقابله با تقریبا ده برابر میزان مصرف فعلی خود ظزفیت دارد و این پرفورمنس را زمانی که آنها تصمیم به تغییر از ROR به Node.js گرفته اند دارا هستند. بحث در مورد PayPal در حال حرکت از جاوا به Node.js برای یک پلت فرم کاربردی است. برنامه Node.js تقریبا دو برابر سریعتر با افراد کمتری ساخته شده است، در سطوح ۳۳٪ کمتر از کد نوشته شده است و با ۴۰٪ فایل کمتر ساخته شده است.

پرفورمنس کامپایل کد

استاندارد PHP Zend در زمان اجرا از یک استراتژی interpreted compilation استفاده می کند که منجر به اجرای کد کمتر بهینه شده می شود تا زمان اجرا با کیفیت خوب Just-in-Time که در هسته Node.js قرار دارد، از V8 JS Engine برای کامپایل JIT استفاده می کند که باعث می شود پرفورمنس Node.js مایل ها جلوتر از پی اچ پی باشد.

Node.js با استفاده از موتورهای جاوا اسکریپت V8 از Just-in-Time استفاده می کند. این استراتژی برای زبان های پویا خود را اثبات کرده است اما اغلب زمان شروع را کمی کاهش می دهد. Node.jsبا استفاده از یک روش تدوین JIT در جهت دستیابی به عملکرد بهتر عمل می کند.

مالتی تسکینگ

همانگونه که گفته شد Node.js در اجرای چندین درخواست همزمان بسیار کارا است، و این به دلیل استفاده از یک حلقه رویداد غیر بلوک (که از یک thread استفاده می کند) می باشد. در حالی که PHP Zend Runtime که از یک فرایند مسدود شونده استفاده می کند، به علت این محدودیت PHP به چندین thread (process) بستگی دارد تا درخواست سرویس وب را خدمت کند و همین امر در صورتی که در سمت کاربر در حال انجام کاری سنگین باشد، درخواست یک اتصال چندگانه را در یک نقطه معین در زمان قرار می دهد، سرور می تواند از منابع برای پاسخ دادن به این درخواست پردازش استفاده کند و باعث تأخیر در پاسخ HTTP به وب / برنامه سمت سرویس گیرنده شود.

سرورهای وب مانند Apache و NGINX راه هایی برای بهبود کارایی مالتی تسکینگ پی اچ پی تا حدودی دارند، اما اینها محدودتر از پشتیبانی واقعی زبان برای multi tasking هستند. پروژه فیس بوک HHVM در سال ۲۰۱۴ منتشر شده است و سعی در حذف این محدودیت در قسمت پی اچ پی دارد.

بسیاری از افراد آزمایش برخی آزمونهای عملکرد را در Node.js در مقابل PHP HHVM انجام داده اند بر اساس این پارامترها:

  • HTTP Communicaton
  • Http & CPU Task
  • Combsort Strict CPU Test

بر اساس نتایج آزمایشات معیار (منابع: www.hostingadvice.com) نتایج زیر در زیر آورده شده است

  • نتایج آزمون بر اساس درخواست های HTTP ساده
    • این معبار “hello world” تحت کنترل HTTP با استفاده از Zend PHP 5.6.6 با OPcache فعال شد.
    • این آزمایش با استفاده از ابزار معیار سنجش آپاچی انجام شد.
    • عملکرد Zend PHP کمتر از نصف Node.js است.
    • عملکرد HHVM حدود ۷۴٪ بهتر از Zend PHP است.
    • عملکرد HHVM خیلی نزدیک به Node.js است، اما Node.js هنوز هم ۱۷٪ سریعتر است.
    • عملکرد با وردپرس با HHVM افزایش می یابد و حدود ۴۷٪ است.
  •  HTTP + CPU tasks

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

node.js
hostingadvice.com

Node.js در مقابل عملکرد پی اچ پی با وظیفه پردازنده سنگین در حال اجرا یک مرتب سازی حبابی

نکات:

  • این معیار تطبیق در مرتب سازی حبابی HTTP با Zend PHP 5.5.7 با OPcache فعال شد.
  • زمان پاسخ PHP به سرعت پس از تخریب process pool در دسترس (با استفاده از حداکثر حداکثر ۲۵۰ فرآیند در وب سرور) کاهش می یابد.
  • عملکرد HHVM مشابه Node.js تا ۱۰۰۰ عناصر مرتب سازی است، اما با ۱۰،۰۰۰ عناصر مرتب سازی، Node.js سرعتش حدود دو برابر سرعت HHVM بود (که در این نمودار قابل مشاهده نیست).

تست پردازنده مرکزی CombSort

ارزیابی مرتب سازی CombSort زیر یک آزمون CPU دقیق است. آن را در اینجا بخوانید.

نتایج معیار:

HHVM هفت بار سریعتر از PHP ساده است (با زمان سیستم)، اما Node.js بیش از پنج برابر سریعتر از HHVM در این تست است.

از لحاظ استفاده از RAM، HHVM خیلی کارآمدتر از PHP است، اما Node.js حتی بهتر از آن هم هست .

دیدگاه من:

به عنوان یک تکنسین و کارآفرین، چیزی که همیشه برایم جذاب است تغییرست. توسعه دهنده باید همیشه تکنولوژی را براساس نیاز بازار تطبیق دهد، بنابراین در مورد نبرد بین فن آوریها بیشتر درباره انتخابهایی است که ما برای ایجاد زندگی بهتر کاربر نهایی انجام میدهیم که از فناوری ما بهتر استفاده میکنند. تا جایی که به آینده توجه داشته باشید، Node.js راهی برای رفتن به سیستم های دانش بنیان است (کد محور). بنابراین توسعه دهندگان انتخاب خود را آگاهانه انتخاب می کنند تا فناوری ها برای شما و مشتریان شما بهتر باشد و تصمیمات عاقلانه ای را برای شما به ارمغان بیاورد، زیرا در نهایت محصول شما را بیشتر می کند. مصرف کننده پادشاه است و بنابراین فناوری باید کار او را تسهیل کند. پی اچ پی هست و می ماند و هیچ جا هم نمی رود ولی Node.js قطعا آینده را داراست.

برای مقایسه دیگری بین Node.js و پایتون اینجا را مطالعه کنید.

همچنین درباره Node.js اینجا را مطالعه کنید.

منبع

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

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