Es scheint, dass Google die Homepage von The Verge lädt, wenn es Workload-Automatisierungstests auf allen seinen Nexus-Geräten durchführt.
Das Stöbern in AOSP ist eine großartige Möglichkeit, neue Entdeckungen über Android zu machen, und dieses Mal sind wir auf etwas ziemlich Komisches gestoßen. Für einige Zeit, Benutzer haben berichtet dass die Technologie-Website TheVerge.com sorgte für langsame Leistung auf Mobilgeräten.
Meiner Erfahrung nach hat sich die Leistung ihrer Website im Laufe der Zeit verbessert. Außerdem ist es nicht so, dass es auf anderen Websites (einschließlich unserer eigenen) keine Probleme gibt, an denen wir arbeiten können, aber ich fand es trotzdem ziemlich amüsant Als offizieller Satz von Workload-Benchmarks entschied sich Google, The Verge für seine Tests zu verwenden.
Android-Workload-Automatisierung
Workload-Automatisierung (WA) ist ein Framework, das von entwickelt wurde ARM zum Sammeln von Leistungsdaten auf Android-Geräten durch die Ausführung einer Reihe wiederholbarer Arbeitslasten. Google misst die Leistung seiner Geräte, indem es viele dieser Arbeitslasttests durchführt und eine Zusammenfassung davon sammelt Stromverbrauch, den sie dann in eine Tabelle importieren, um zu sehen, wie ihre Optimierungen die Leistung verbessert haben Zeit. Das Unternehmen wählt die Apps aus, die es in seine Testsuite aufnehmen möchte, im Allgemeinen beschränkt es sich jedoch auf die meisten beliebten Google-Apps. Das ist der Kern dessen, wie es funktioniert, aber wir zeigen die Beweise aus dem Quellcode und beschreiben den Test Sehen Sie sich die Suiten detaillierter an, damit Sie sich ein besseres Bild davon machen können, welche automatisierten Tests Google zur Messung durchführt Leistung.
Innerhalb von AOSP gibt es eine Verzeichnis gewidmet zu den Workload-Automatisierungstests. Die zum Testen verwendeten Apps sind in definiert defs.shund fallen im Allgemeinen in eine von zwei Kategorien: Standard-, vorinstallierte Google App- oder Drittanbieter-Webbrowser. Eine Benchmark-App hebt sich von den anderen ab, und das ist es auch com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity
wovon ich annehme, dass es sich auf das bezieht BrueBench ST-Rezensent Benchmark, der auf der Unreal Engine 4 basiert.
# 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'
Diese Aktivitäten werden wie folgt über die ADB-Befehlszeile gestartet Systrace Optionen zum Messen der App-Leistung:
dflttracecategories="gfx input view am rs power sched freq idle load memreclaim"
Insbesondere die Chrome-App wird mit einer Flagge zum Laden von The Verge gestartet:
Warum der Test für die unterschiedlich zu sein scheint Volantis (Nexus 9), ich bin mir nicht ganz sicher. Wie dem auch sei, welche Tests diese Chrome-Aktivität mit The Verge tatsächlich durchläuft, können wir anhand des Quellcodes der Workload-Automatisierungstests ermitteln.
Testsuiten
Da ist zunächst einmal das systemapps.sh Test, der laut Google wie folgt funktioniert:
# 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.
Als nächstes gibt es das recentfling.sh Test, der so funktioniert:
# 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.
Und dann gibt es noch chromefling.sh, was die Leistung von Chrome ziemlich einfach testet:
# Script to start 3 chrome tabs, fling each of them, repeat
# For each iteration, Total frames and janky frames are reported.
Ein weiterer amüsanter Test in der Workload Automation-Suite, der jedoch nichts mit The Verge zu tun hat, ist der youtube.sh Leistungstest, der UI-Fehler misst
#
# 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
Schließlich wird jeder dieser Tests verwendet, um den tatsächlichen Stromverbrauch zu messen, indem er sie für eine bestimmte Zeitspanne durchläuft, wie in definiert 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 kann diese Daten dann mithilfe von Google erfassen pwrsummary.sh und importieren Sie sie in eine Tabelle:
# 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
#
Hierbei handelt es sich allesamt um ziemlich häufige UI-Leistungstests in der realen Welt, nicht unähnlich den Tests, die Sie dort sehen würden unsere eigenen Tests. Es scheint, dass die Änderung, die Startseite von The Verge beim Öffnen von Chrome zu laden, relativ neu war, da Google während dieser Tests vor dem letzten Jahr nur einen neuen Tab in Chrome öffnete. Eine Änderung vorgenommen 28. Mai 2015 Beim Testen von Chrome wurde jedoch die Verwendung von The Verge eingeführt. So amüsant es auch ist, dass Google bei der Workload-Automatisierung ausgerechnet The Verge nutzt Bedenken Sie beim Testen, dass dies nicht bedeutet, dass The Verge der schlimmste Übeltäter im Internet ist Leistung.
Im Gegenteil, viele andere Webseiten leiden unter einer mittelmäßigen Leistung, da immer mehr Anzeigen geschaltet werden, um den Aufstieg von Werbeblockern zu kompensieren. Tatsächlich ist es höchstwahrscheinlich, dass die Entscheidung, The Verge zu nutzen, einfach aus Bequemlichkeit getroffen wurde, wenn man bedenkt, wie hoch die Technologie ist Der durchschnittliche Googler ist versiert und der Insider-Witz unter vielen Enthusiasten, wenn es um die Webseite von The Verge geht Leistung.