همه چیز دربارۀ پرفرمنس اپلیکیشن‌های اندروید

نویسنده : سید ایوب کوکبی ۲۲ بهمن ۱۳۹۷

پرفرمنس یکی از مهم‌ترین شاخص‌های سنجش کیفیت برنامه است. پرفرمنس (Performance) و پایداری (Stability) دو عامل تعیین‌کننده‌ در موفقیت و درآمدزایی یک برنامه هستند.

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

  • میزان حافظه (RAM) مصرفی برنامه؛
  • عملکرد برنامه هنگام تغییر شرایط شبکه یا بروز مشکلات اتصال؛
  • آیا با افزایش همزمان تعداد کاربران، برنامه کرش می‌کند؟
  • عملکرد برنامه در کنار سایر اپلیکیشن‌های نصب شده؛
  • مدت زمان لازم برای آماده‌به‌کار شدن برنامه؛
  • نرخ از اتلاف بسته‌های اطلاعاتی.

در صورتی که برنامۀ شما کند باشد، تمایل کاربران به استفاده از آن کم شده و برنامه را حذف می‌کنند. در ادامه لیستی از متریک‌های مهم که نیازمند توجه بیشتری هستند ذکر شده است:

زمان استارت‌آپ برنامه: از لحظه‌ای که کاربر روی آیکون برنامه کلیک می‌کند تا زمانی که صفحۀ اصلی برنامه ظاهر می‌شود چقدر طول می‌کشد؟ این زمان بهتر است ۱ الی ۲ ثانیه بیشتر نباشد.

باتری: برنامۀ شما نباید در پس‌زمینه با فعالیت‌های بی‌مورد حافظه مصرف کرده و دستگاه را داغ کند. از بخش تاریخچۀ مصرف باتری می‌توانید روند مصرف باتری را رصد نمایید.

حافظه: با استفاده از Android Monitor میزان حافظۀ مصرفی برنامه را اندازه‌گیری کنید. صفحات و ماژول‌های پرمصرف را شناسایی کرده و از انیمیشن‌ها با دقت بیشتری استفاده کنید.

تداخل: برنامۀ شما نبایستی به هنگام اجرا در کنار سایر برنامه‌ها تداخل ایجاد کند. بهترین روش، سوئیچ کردن بین برنامه و سایر اپلیکیشن‌ها در هنگام تست برنامه است.

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

بخوانید  آموزش زبان کاتلین – درس 8 (شرط IF)

فراخوانی API: تعداد ارتباطات برنامه با سرور باید در حداقل میزان خود قرار داشته باشد. برخی اوقات، برای کار خاصی، چندین API Call، فراخوانی می‌شود که درست نیست. برای پرفرمنس بهتر تا حد امکان بایستی تعداد این فراخوانی‌ها را کاهش دهید.

مدت زمان در دسترس نبودن سرور: سرورها اگرچه باید ۲۴ ساعت هفته در دسترس باشند ولی به دلایل متعددی ممکن است گهگاهی از دسترس خارج شوند. برنامه را طوری طراحی کنید که وابستگی صددرصد به سرور نداشته باشد. یکی از راه‌ها این است که به محض خارج شدن سرور از سرویس‌دهی، اطلاعات را از پایگاه دادۀ Native محلی نمایش دهید که داخل گوشی ذخیره شده است (مثل اپلیکیشن‌های پیام‌رسان که آخرین چت‌ها را به صورت آفلاین نمایش می‌دهند.) راه دیگر استفاده از سرور پشتیبان است؛ به این صورت که هنگام از دسترس خارج شدن سرور اول، سرور پشتیبان به صورت خودکار جایگزین آن شود. این کار را می‌توانید به یک متخصص شبکه بسپارید. راه دیگر استفاده از سرورهای CDN است که دسترسی به داده‌ها را در بدترین شرایط ممکن نیز تضمین می‌کند.

موارد مهم در افزایش پرفرمنس شبکه:

جیترها: جیتر (Jitter) به تاخیری گفته می‌شود که در هنگام دریافت اطلاعات از شبکه پدید می‌آید. این مشکل ناشی از قطعی اتصال اینترنت یا packet switch networkهاست.

اتلاف بسته‌های اطلاعاتی: به دلایل مختلفی بسته‌های ارسال در شبکه ممکن است از بین بروند. در چنین شرایطی برنامۀ شما باید توانایی درخواست مجدد بسته یا نمایش پیغام مناسب به کاربر را داشته باشد.

سرعت شبکه: برنامه را با اینترنت‌های مختلف اعم از ۲٫۵G, 3G, 4G, LTE, Wi-Fi و شبکه‌های موبایلی تست کنید.

بخوانید  آموزش زبان کاتلین – درس 16 (آرگومان‌های نام‌گذاری شده و پیش‌فرض)

کشینگ: دانلود کردن منابعی همچون تصویر و ویدیو بخصوص برای اینترنت کم‌سرعت می‌تواند کاری زمان‌بر و آزاردهنده باشد. به همین دلیل توجه ویژه‌ای داشته باشید به مبحث Caching.

درخواست‌های HTTP: هرچقدر تعداد درخواست‌های HTTP کمتر باشد به نفع شما و کاربران شماست. کاهش تعداد درخواست‌ها باعث کاهش پیچیدگی برنامۀ شما می‌شود. منابع کمتری مصرف می‌شود و نهایتاً خرج کمتری خواهید داشت.

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

لودینگ: در هنگام لود کردن اطلاعات، انیمیشنی به کاربر نمایش دهید که تجسم دریافت سریع داده‌ها را به او منتقل کند. در واقع حواسش را با انیمیشن پرت کنید!

داده‌ها: دریافت داده‌ها نباید آنقدر طول بکشد که کاربر روی هر قسمتی از برنامه کلیک کند لحظاتی را در انتظار سپری کند. یکی از راه‌ها پری‌لود یا لوددینگ زودهنگام داده‌هاست. مثلاً وقتی کاربر در حال تماشای تصاویر و مطالب بالای صفحه است. برنامه در پس‌زمینه، داده‌های پایین صفحه را کم‌کم دانلود و در کش ذخیره کند. راه دیگر افزایش سلسله‌مراتبی کیفیت تصاویر است. مثلا در گوگل‌ایمیج در هنگام جستجوی تصاویر، ابتدا رنگ غالب هر تصویر نشان داده شده و به مرور تصویر به صورت کامل نشان داده می‌شود.

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

اسکرول نرم: برای اینکه کاربران تجربۀ خوبی در هنگام کار با برنامه داشته باشند و اصطلاحاً با لگ مواجه نشوند، سعی کنید تمامی کارهایی که پردازش آن‌ها زمان می‌برد را در ترد دیگری به جزء ترد UI انجام دهید. مثلاً دسترسی به دیتابیس هرگز نباید در UI اتفاق بیفتد. این کار قطعاً برنامه را با لگ‌های فراوان مواجه می‌کند. پیشنهاد می‌کنم برای پردازش فایل‌های JSON، دسترسی به شبکه یا سایر موارد مشابه از کتابخانه‌هایی که به همین منظور ساخته شده‌اند استفاده کنید. افرادی این کتابخانه‌ها را نوشته‌اند و روی مباحث پرفرمنس آن به اندازۀ کافی وقت گذاشته‌اند.

بخوانید  بهره‌وری بیشتر در اندروید استودیو به کمک پلاگین‌ها

ابزارهای تست پرفرمنس

۱- Monkop: ابزارهای مختلفی برای تست پرفرمنس برنامه رو گوشی‌های موبایل وجود دارد که یکی از بهترین‌ها Monkop است. این برنامه عملکرد ساده‌ای دارد و قابلیت‌های فراوانی برای تست اپلیکیشن‌های اندروید روی اسمارت‌فون‌ها تدارک دیده است. کافی است فایل APK برنامه را به سایت ارسال کنید و تست‌های لازم را انجام دهید.

۲- Robotium

۳- Automator (برای iOS/Mac)

پرفرمنس برنامه مبحث گسترده‌ای است که با یکی دو مقاله نمی‌توان به پایان رساند. در واقع پایانی جهت افزایش بهره‌وری برنامه وجود ندارد. امیدوارم با سرنخ‌های بیان شده بتوانید Performance برنامه‌های خود را بهبود دهید.

سید ایوب کوکبی

نویسنده و مترجم...

0 دیدگاه

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