بسیاری از کاربران گوشیهای هوشمند معتقد هستند که سیستمعامل اندروید بهینه نیست. در این مطلب در مورد بهینه بودن این سیستمعامل صحبت خواهیم کرد.
در بسیاری از کامنتهایی که کاربران گوشیهای هوشمند در زیر پستهای مرتبط با این سیستمعامل ارسال میکنند، این جمله را زیاد میبینیم: «اندروید بهینهسازی نشده است». این مورد بهخصوص در زیر ویدیوها و مطالبی که در مورد مقایسهی عملکرد آیاواس و اندروید بیشتر دیده میشود. ریشهی اصلی داشتن چنین نظراتی این است که سیستمعامل آیاواس اپل بسیار بهینه عمل میکند و سختافزار و نرمافزار محصولات اپل بهترین هماهنگی ممکن را با هم دارند. اما در طرف دیگر سیستمعامل اندروید را داریم که عملکرد متفاوتی در محصولات تولید شده توسط کمپانیهای گوناگون دارد. باز هم به این مورد اشاره میکنیم که مطمئنا اپل بسیار بهینه عمل میکند.
برای درک بهتر این موضوع که کدلم سیستمعامل موبایلی بهینهتر است ابتدا باید سرچشمهی آنها یعنی نبرد بین پیسی و مک را به خاطر بیاوریم. در همین زمینه اپل با کنترل فراوانی که بر سختافزار و نرمافزارهایش دارد باعث شده تا محصولات نهایی این کمپانی بهخوبی کار کنند. اما مایکروسافت در این بخش فقط بر نرمافزار پیسیها کنترل دارد و سختافزار پیسیها توسط شرکتهای مختلفی چون دل، اچپی، آیبیام و... تولید میشود. همچنین در ساخت پیسیها از پردازندههای اینتل یا ایامدی استفاده شده و کارت گرافیک رایانهها نیز معمولا از نوع ATI (اکنون AMD) یا انویدیا است. اپل نیز از همین شرایط برای کمپینهای تبلیغاتی خود استفاده کرد و در برخی از موارد هم حق واقعا با کوپرتینوییها بود. در طول تاریخچهی ۲۰ سالهی سیستمعامل ویندوز همیشه مشکل درایور مناسب برای پیسیهای مختلف و صفحهی آبی مرگ برقرار بوده است.
![android optimize](http://cdn01.zoomit.ir/2017/3/2adbb0a1-4bf0-47dd-b754-8416d4f1ec24.jpg)
دقیقا همین وضعیت در مورد سیستمعامل آیاواس اپل و سیستمعامل اندروید گوگل در دنیای موبایلها برقرار است و اپل سختافزار و نرمافزار اختصاصی خود را در اختیار دارد؛ اما اندروید همانند ویندوز، توسط شرکتهای مختلفی مورد استفاده قرار میگیرد. گوگل خود نسخههای جدید اندروید را منتشر میکند؛ اما در بخش سختافزاری کمپانیهایی چون سامسونگ، سونی، الجی، اچتیسی و اخیرا خود گوگل از این سیستمعامل استفاده میکنند. چیپستهای موبایلی امروزه توسط شرکتهای کوالکام، سامسونگ، مدیاتک و هواوی ساخته میشوند. پردازندههای مرکزی موجود در چیپستهای سامسونگ و کوالکام از معماری آرم بهره میبرند و پردازندههای گرافیکی چیپستهای موبایلی نیز معمولا از معماری آرم یا کوالکام بهره میبرند.
علاوه بر این گوشیهای هوشمند اندرویدی با قیمتهای مختلف از ۱۰۰ دلار گرفته تا بالای هزار دلار به بازار عرضه شدهاند. برخی از گوشیهای اندرویدی از سختافزاری بسیار سطح پایین بهره میبرند و پرچمداران مجهز به این سیستمعامل با جدیدترین مشخصات سختافزاری همراه هستند. این یعنی دامنهی انتخاب در دنیای اندروید بسیار گسترده بوده و اگر انتخاب درستی در این بین نداشته باشید احتمالا یک تجربهی بد از پلتفرم اندروید خواهید داشت.
اما آیا سیستمعامل اندروید واقعا بهینه نیست؟ برخلاف تصور بسیاری از افراد پاسخ این سوال منفی است و در این مقاله به شما نشان خواهیم داد که چرا سیستمعامل اندروید بهینه است.
جاوا در مقابل سی
زبان پیشفرض اندروید جاوا است. اپلیکیشنهای جاوا نسبت به اپلیکیشنهای نوشته شده به زبان سی یا سیپلاسپلاس کندتر عمل میکنند. دلیل این امر این است که اپلیکیشنهای نوشته شده بر پایهی زبان سی یا سیپلاسپلاس با کد اصلی ماشینی کامپایل میشوند. اما در هر صورت تفاوت سرعت این دو دسته اپ چندان برای کاربران قابل توجه نیست.
دلیل مهمی که باعث شده بسیاری کاربران فکر کنند اندروید بهینه نشده، این است که اپلیکیشنهای سیستمعامل آیاواس از جاوا استفاده نمیکنند و سریعتر اجرا میشوند. در بالا اشاره کردیم که تفاوت سرعت اپلیکیشنهای اندروید و آیاواس چندان محسوس نیست و دلیل این امر این است که بخشهای بزرگی از سیستمعامل اندروید بر پایهی سی نوشته شده و نه جاوا. علاوه بر این بسیاری از اپلیکیشنها و بازیهای اندرویدی که به میزان زیادی از پردازندههای مرکزی و پردازندههای گرافیکی استفاده میکنند نیز با زبان سی نوشته شدهاند. به عنوان مثال تمام بازیهایی که با موتور بازیسازی معروف و محبوب یونیتی یا آنریل اینجین ساخته شدهاند از جمله اپلیکیشنهای نیتیو (Native) محسوب میشوند و نه اپلیکیشن جاوا.
![java vs c](http://cdn01.zoomit.ir/2017/3/a89861d0-fd9f-4f7c-b6dd-bbda8259a35b.jpg)
اما نتیجهگیری؟ ابتدا توجه داشته باشید که اگرچه جاوا نسبت به اپلکییشنهای Native سرعت کمتری دارد؛ اما در دنیای واقعی تفاوت این سرعت چندان زیاد نیست. دوم اینکه ماشینمجازی جاوای اندروید به طور دائمی در حال بهینه شدن است و حالا تکنولوژیهای بسیار پیچیدهای در آن بکار رفته که سرعت اجرای جاوا را بیشتر کرده است. سومین موردی که باید به آن توجه داشته باشید، این است که بخشهای بزرگی از اندروید از جمله کرنل لینوکس بر پایهی زبان سی نوشته شدهاند.
شتابدهندهی سختافزاری
سوال بعدی این است: آیا اپل دستورالعملهای خاصی به چیپستهای پردازشی خود اضافه کرده تا بدین طریق سرعت انجام برخی عملیاتها افزایش یابد؟ اگر کوپرتینوییها چنین کاری را انجام دادهاند، چرا شرکتهای دیگر از جمله کوالکام یا سامسونگ این اقدام را انجام ندادهاند؟ اپل با بهره گرفتن از لایسنس معماری کمپانی آرم، امکان ساخت پردازندههای مرکزی سازگار با آرم را توسط مهندسان و تکنولوژیهای خود دارد. هر پردازندهی اینچنینی باید به طور ۱۰۰ درصد با معماریهای آرم همخوانی داشته باشد. به منظور بررسی این پروسه، شرکت آرم یکسری تستهای مربوط به سازگاری را در نظر گرفته تا بدین طریق پردازندههای مختلف از نظر همخوانی کامل با معماری این کمپانی بررسی شوند. در هرحال، این تستها نمیتوانند دستورالغملهای اضافهی اعمال شده در پردازندهها را شناسایی کنند.
![hardware accleration](http://cdn01.zoomit.ir/2017/3/8eaa7d3f-e8bf-4aa3-b59e-c4549916ddc2.jpg)
این یعنی از نظر تئوری در روش اپل انجام برخی از وظایف بهجای نرمافزار توسط سختافزار انجام میشوند.در واقع ایده این است که اجرای وظایف مختلف در سختافزار سرعت بیشتری نسبت به اجرای آنها توسط نرمافزار دارد. رمزنگاری یک مثال بسیار خود در این زمینه است. معماری ARMv7 هیچ دستورالعملی برای انجام رمزنگاری AES در سختافزار نپارد و تمامی اقدامات مربوط به رمزنگاری توسط نرمافزارها انجام میشوند. در هرحال معماری ARMv8 به نحوی طراحی شده که دستورالعملهای خاصی برای انجام رمزنگاری AES در سختافزار ارائه میدهد. این یعنی سرعت رمزنگاری AES در چیپستهایی که بر پایهی معماری ARMv8 نسبت به چیپستهای مبتنی بر معماری ARMv7 بیشتر است.
ممکن است اپل یکسری دستورالعمل دیگر به چیپستهای پردازشی خود اضافه کرده باشد که با استفاده از آنها یکسری از وظایف بهجای نرمافزار توسط سختافزار انجام میشوند. در هر صورت هیچ دلیل برای اثبات این ادعا وجود ندارد. تحقیقهای صورت گرفته در باینریهای تولید شده توسط کامپایلرهای عمومی اپل و حتی کد منبع خود کامپایلرهای این کمپانی هیچ جزئیاتی از دستورالعملهای مخصوص اپل فاش نکردهاند.
اما این همهی داستان نیست. روش دیگری که اپل به منظور افزایش سرعت سختافزار بکار گرفته احتمالا استفاده از سختافزار مخصوصی است که باید شبیه روشی که پردازنده از پردازشگر مرکزی یا یک DSP استفاده میکند، برنامهنویسی شود. به عبارت دیگر کامپایلر و مهمتر از آن کیتتوسعهنرمافزاری آیاواس به روشی نوشته شده که برخی از کارهای خاص را با تنظیم پارامترهای مورد نیاز توسط سختافزار انجام میدهد.
این همان چیزی است که در یک پردازندهی گرافیکی رخ میدهد. یک اپلیکیشن اطلاعات سهگانهی خود را در نواحی مختلفی از حافظه بارگذاری میکند و سپس به پردازندهی گرافیکی میگوید که بر روی این دادهها کار کند. همین فرآیند در مورد DSP یا یک ISP نیز به صورت مشابه انجام میشود.
برای درک بهتر این موضوع یک مثال میآوریم: فرض کنید که مهندسان اپل دریافتهاند که SDK همیشه نیاز به معکوس کردن یک رشتهی متنی داشته باشد. اگر این رشتهی متنی Apple باشد پس از معکوس کردن آن به کلمهی Elppa دست میيابیم. انجام اینکار با استفاده از نرمافزار بسیار ساده است اما اگر یک سختافزار ویژه برای انجام چنین کاری در نظر گرفته شده باشد، سرعت انجام کار بیشتر خواهد شد. البته باید توجه داشته باشید این مثال فقط برای توضیح دادن شرایط است و در دنیای واقعی چنین مثالی وجود ندارد. در نتیجهی استفاده از روش اپل، سرعت پردازش دادهها افزایش خواهد یافت.
معماری آرم از مدتی قبل ساختارهای پیچیدهای دارد که از آنها بهعنوان NEON یاد میشود. این ساختارها امکان کار بر روی دادهها را به صورت موازی فراهم میکنند. عملیاتهای چندگانه بر روی دادهها با استفاده از این ساختارهای تکی انجام خواهند شد و این یعنی چندین کار به صورت موازی و همزمان انجام خواهد شد. همچنین پردازندههای موبایلی شامل سختافزارهای گسستهای هستند که هر کدام عملیاتهای مختلفی انجام میدهند. از جمله این عملیاتها میتوان به پردازندهی گرافیکی، DSP و ISP و ... اشاره کرد.
پردازندههای مبتنی بر معماری ARM از جمله چیپستهای ساخت کوالکام، سامسونگ، مدیاتک و هواوی قابلیت تغییر انجام یک کار از نرمافزار به سختافزار را دارند. بهعنوان مثال کوالکام در Hexagon DSP SDK خود این امکان را فراهم آورده که توسعهدهندگان بتوانند کاری کنند که اپلیکیشنها به طور مستقیم از سختافزار DSP استفاده کنند.
یکپارچهسازی سیستمها
یکی از جنبههای بهینهسازی این است که اطمینان حاصل شود که اجزای کلیدی کل سیستم بهخوبی با یکدیگر کار میکنند. استفاده از پردازندههای مرکزی و پردازندههای گرافیکی بسیار سریع در شرایطی که درایورهای مورد نیاز بهینهسازی نشده باشند هیچ تاثیری برای افزایش سرعت نخواهد داشت. همین موضوع در مورد DSP، ISP و سایر اجزای سیستم نیز صدق میکند.
جالب است بدانید که تولیدکنندههای چیپستهای پردازشی از جمله کوالکام و طراحان پردازندهها مثل ARM این موضوع را تضمین کردهاند که درایورهای نرمافزاری مورد نیاز در محصولات آنها به خوبی بهینهسازی شدهاند. این وضعیت در واقع دو مرحله دارد: اول اینکه شرکت آرم طراحی مورد نیاز برای ساخت پردازندهی مرکزی و یا پردازندهی گرافیکی را به شرکتهای تولیدکنندهی چیپست واگذار میکند. سپس شرکتهای تولیدکنندهی چیپستهای پردازشی مثل مدیاتک، لایسنس اجرای نرمافزار بر روی پردازندهای خود را صادر میکنند. بدین طریق سیستمعاملهای مختلف از جمله اندروید توسط چیپستهای پردازشی پشتیبانی میشوند.
![system](http://cdn01.zoomit.ir/2017/3/4c6aa7c3-93b2-477c-b85a-85c827069984.jpg)
اگر شرکتهای تولیدکنندهی چیپست مثل کوالکام یک طراحی داخلی برای ساخت پردازندههای مرکزی یا گرافیکی خود داشته باشند در این صورت این کمپانیها باید بخش نرمافزاری خاصی را هم برای پشتیبانی از سیستمعامل اندروید توسعه دهند. توسعه دادن بخش نرمافزاری مخصوص پشتیبانی چیپست از سیستمعاملی مثل اندروید باعث میشود تا کمپانیهای تولیدکنندهی دستگاههای اندرویدی به خرید پردازندههای کوالکام روی بیاورند. بار دیگر باید اشاره کنیم که اگر نرمافزار مخصوص پشتیبانی چیپست از سیستمعاملها به خوبی بهینه نشده باشد، در آن شرایط امکان دارد فروش آن چیپست پردازشی کاهش یابد.
اما نتیجه اینکه شرایط مورد بحث باعث شده تا شرکتهای مختلف از جمله آرم و کوالکام فقط به تولید سختافزار یا طراحی معماری پردازشی مشغول نبوده و در واقع باید نرمافزارهای زیادی را هم تولید کنند تا چیپستهای پردازشی از سیستمعاملهای مورد نظر پشتیبانی کند.
سیستمعامل
اما وضعیت در مورد خود اندروید چگونه است؟ آیا فریمورکها و زیرسیستمهای اندروید بهینه نشدهاند؟ پاسخ به این سوال منفی است. دلیل این پاسخ این است که اندروید از سال ۲۰۰۸ تا کنون همواره در حال توسعه بوده و طی سالها به طرز قابل توجهی رشد کرده و به بلوغ خوبی رسیده است. برای تایید این گفته کافیست که نگاهی به اندروید نسخه ۲ و سپس نسخهی ۷ داشته باشید تا تفاوت و بلوغ اندروید را بهخوبی درک کنید. اندروید با معماری آرم، اینتل و MIP سازگاری دارد و مهندسان گوگل، سامسونگ، آرم و بسیاری از کمپانیهای دیگر با همکاری هم به این موفقیت دست یافتهاند. مهمتر از همه متنباز بودن اندروید است و این یعنی کد اصلی این سیستمعامل برای همهی افراد در دسترس است و همه میتوانند آن را مطابق نیاز خود ویرایش کنند.
جدا از همه، گوگل متخصصان بسیار خبرهای در بهینهسازی دارد. برای تایید این حرف نگاهی به یوتیوب و خود موتور جستجوی گوگل بیاندازید. روزانه میلیونها کاربر از سرویسهای این شرکت به طور همزمان و لحظهای استفاده میکنند و مشخصا برای چنین سرویسدهی بینقصی، بهینهسازیهای بسیاری انجام گرفته است و از آنجا که اندروید هماکنون یکی از مهمترین محصولات این شرکت محسوب میشود مسلما وظیفهی تعداد زیادی از متخصصان گوگل بهینه کردن دائمی اندروید است.
نتیجهگیری
با در نظر گرفتن بخشهای مختلف از جمله طراحیهای چیپستها، طراحی سختافزار، درایورها، سیستمعامل اندروید و مهندسانی که با همکاری یکدیگر در این بخشها کار میکنند، این که بگوییم اندروید بهینه نشده کمی غیر منطقی است. در هر صورت این حرف بدان معنا نیست که هماکنون سیستمعامل یاد شده کاملا بهینه بوده و جایی برای بهینهسازی بیشتر ندارد. بد نیست بدانید که بسیاری از تولیدکنندگان گوشیهای هوشمند زمان زیادی را صرف میکنند تا اطمینان حاصل کنند که گوشیهای تولید شده توسط آنها از بهترین دایورها و جدیدترین بهینهسازیهای سیستمی بهره ببرند.