Изглежда, че Google зарежда началната страница на The Verge, когато извършва тестване за автоматизация на работното натоварване на всички свои устройства Nexus.
Ровенето в AOSP е чудесен начин да направите нови открития за Android и този път се натъкнахме на нещо доста забавно. За известно време, потребители са съобщили че технологичният уебсайт TheVerge.com осигурява бавна производителност на мобилни устройства.
За тяхна заслуга, ефективността на уебсайта им се е подобрила с времето според моя опит. Освен това не е като че други сайтове (включително нашия) нямат проблеми, върху които можем да се стремим да работим, но въпреки това ми се стори доста забавно, че в официален набор от бенчмаркове за работно натоварване, Google реши да използва The Verge в своите тестове.
Автоматизация на работното натоварване на Android
Автоматизация на работното натоварване (WA) е рамка, разработена от ARM за събиране на данни за производителността на устройства с Android чрез изпълнение на набор от много повтарящи се работни натоварвания. Google сравнява производителността на своите устройства, като прави много от тези тестове за натоварване и събира обобщение на консумация на енергия, която след това импортират в електронна таблица, за да видят как техните оптимизации са подобрили производителността време. Компанията избира кои приложения да включи в своя тестов пакет, но като цяло те се ограничават до повечето от популярните приложения на Google. Това е същината на това как работи, но ние ще покажем доказателствата от изходния код и ще опишем теста пакети по-подробно, за да можете да получите по-добра представа за това какви автоматизирани тестове Google прави за измерване производителност.
В рамките на AOSP има a директория, посветена към тестовете за автоматизация на работното натоварване. Приложенията, които се използват за тестване, са дефинирани в defs.shи обикновено попадат в една от двете категории: по подразбиране, предварително инсталирано приложение на Google или уеб браузър на трета страна. Едно приложение за сравнение се отличава от останалите и то е com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity
което предполагам се отнася до Рецензент на BrueBench ST бенчмарк, който е базиран на Unreal Engine 4.
# default activities. Can dynamically generate with -g.
gmailActivity='com.google.android.gm/com.google.android.gm.ConversationListActivityGmail'
clockActivity='com.google.android.deskclock/com.android.deskclock.DeskClock'
hangoutsActivity='com.google.android.talk/com.google.android.talk.SigningInActivity'
chromeActivity='com.android.chrome/_not_used'
contactsActivity='com.google.android.contacts/com.android.contacts.activities.PeopleActivity'
youtubeActivity='com.google.android.youtube/com.google.android.apps.youtube.app.WatchWhileActivity'
cameraActivity='com.google.android.GoogleCamera/com.android.camera.CameraActivity'
playActivity='com.android.vending/com.google.android.finsky.activities.MainActivity'
feedlyActivity='com.devhd.feedly/com.devhd.feedly.Main'
photosActivity='com.google.android.apps.photos/com.google.android.apps.photos.home.HomeActivity'
mapsActivity='com.google.android.apps.maps/com.google.android.maps.MapsActivity'
calendarActivity='com.google.android.calendar/com.android.calendar.AllInOneActivity'
earthActivity='com.google.earth/com.google.earth.EarthActivity'
calculatorActivity='com.google.android.calculator/com.android.calculator2.Calculator'
calculatorLActivity='com.android.calculator2/com.android.calculator2.Calculator'
sheetsActivity='com.google.android.apps.docs.editors.sheets/com.google.android.apps.docs.app.NewMainProxyActivity'
docsActivity='com.google.android.apps.docs.editors.docs/com.google.android.apps.docs.app.NewMainProxyActivity'
operaActivity='com.opera.mini.native/com.opera.mini.android.Browser'
firefoxActivity='org.mozilla.firefox/org.mozilla.firefox.App'
suntempleActivity='com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity'
homeActivity='com.google.android.googlequicksearchbox/com.google.android.launcher.GEL'
Тези дейности се стартират чрез командния ред на ADB със следното Systrace опции за измерване на ефективността на приложението:
dflttracecategories="gfx input view am rs power sched freq idle load memreclaim"
По-специално приложението Chrome се стартира с флаг за зареждане на The Verge:
Що се отнася до това защо тестът изглежда се различава за volantis (Nexus 9), не съм съвсем сигурен. Както и да е, що се отнася до какви тестове действително преминава тази Chrome-activity-with-The-Verge, можем да определим, като разгледаме изходния код на тестовете за автоматизация на работното натоварване.
Тестови пакети
Първо, това е systemapps.sh тест, който Google твърди, че работи като такъв:
# Script to start a set of apps in order and then in each iteration
# switch the focus to each one. For each iteration, the time to start
# the app is reported as measured using atrace events and via am ThisTime.
# The output also reports if applications are restarted (eg, killed by
# LMK since previous iteration) or if there were any direct reclaim
# events.
Следващото е recentfling.sh тест, който работи по следния начин:
# Script to start a set of apps, switch to recents and fling it back and forth.
# For each iteration, Total frames and janky frames are reported.
И тогава има chromefling.sh, който тества производителността на Chrome доста просто:
# Script to start 3 chrome tabs, fling each of them, repeat
# For each iteration, Total frames and janky frames are reported.
Друг забавен тест в пакета Workload Automation, макар и несвързан с The Verge, е youtube.sh тест за производителност, който измерва UI jank
#
# Script to play a john oliver youtube video N times.
# For each iteration, Total frames and janky frames are reported.
#
# Options are described below.
#
iterations=10
app=youtube
searchText="last week tonight with john oliver: online harassment"
vidMinutes=15
И накрая, всеки от тези тестове се използва за измерване на потреблението на енергия в реалния свят чрез преминаване през тях за определен период от време, както е определено в pwrtest.sh:
# Script to gather perf and perf/watt data for several workloads
#
# Setup:
#
# - device connected to monsoon with USB passthrough enabled
# - network enabled (baseline will be measured and subtracted
# from results) (network needed for chrome, youtube tests)
# - the device is rebooted after each test (can be inhibited
# with "-r 0")
#
# Default behavior is to run each of the known workloads for
# 30 minutes gathering both performance and power data.
След това Google може да събира тези данни, използвайки pwrsummary.sh и ги импортирайте в електронна таблица:
# print summary of output generated by pwrtest.sh
#
# default results directories are -[-experiment]. By default
# match any device and the year 201*.
#
# Examples:
#
# - show output for all bullhead tests in july 2015:
# ./pwrsummary.sh -r "bh-201507*"
#
# - generate CSV file for import into spreadsheet:
# ./pwrsummary.sh -o csv
#
Това са доста често срещани тестове за производителност на потребителския интерфейс в реалния свят, не по-различни от видовете, които бихте видели нашето собствено тестване. Изглежда, че промяната за зареждане на началната страница на The Verge при отваряне на Chrome е доста скорошна, тъй като преди миналата година Google отваряше нов раздел в Chrome само по време на тези тестове. Направена промяна в 28 май 2015 г въведе обаче използването на The Verge при тестване на Chrome. Колкото и забавно да е, че Google използва The Verge of all places, когато извършва автоматизация на работното натоварване тестване, имайте предвид, че това не означава, че The Verge е най-лошият нарушител в мрежата производителност.
Далеч от това, всъщност, тъй като много други уеб страници страдат от посредствено представяне благодарение на разпространението на все повече и повече реклами, за да компенсират нарастването на рекламните блокери. Всъщност най-вероятно е решението да се използва The Verge да е било просто от удобство, като се има предвид колко технологични разумен е средният служител на Google и вътрешната шега на много ентусиасти относно уеб страницата на The Verge производителност.