The Data Manipulation 3.0 test simulates the demands of data-heavy applications such as fitness and financial apps. It measures the time to parse data from various file formats, then records the frame rate while interacting with dynamic charts.

Workload tasks

The first part of the test focuses on measuring performance while reading, parsing, and validating data. 

  1. Read 10,000 tuples (date, value) of data from a CSV file with a standard InputStreamReader.
  2. Read 10,000 tuples (date, value) of data from a XML file with Android-standard XmlPullParser.
  3. Read 10,000 tuples (date, value) of data from a JSON file with the common GSON library.
  4. Read 10,000 tuples (date, value) of data from Protocol Buffers using Wire by Square Inc. 

In the second part of the test, the data is visualized with dynamic, animated charts using the common open-source MPAndroidChart library. Several charts are tested with animations and common gestures such as swipe and zoom. 

  1. A cubic line chart is tested with three swipes forward and backward, vertical and horizontal zoom-in/out, and X/Y animations.
  2. A bar chart is tested with three swipes forward and backward, horizontal zoom-in/out, and X/Y animations.
  3. A pie chart is tested with swipe forward and backward, circular swipe, and circular animation.
  4. A real-time cubic line chart is tested with a new data point added every 30 milliseconds.
  5. Multiple line, bar, and cubic charts are shown inside a horizontal RecyclerView while performing scrolling animations.

Scoring

DataManipulation3.0 score    =    5,000 × geomean(P_1,P_2 )

Where:
P1     =    geomean(1/R1, 1/R2, 1/(R3^2), 1/(R4^2))
P2     =    geomean(C1, C2, C3, C4, C5)

And where:
R1     =    Time to parse data from the CSV file in workload task 1
R2     =    Time to parse data from the XML file in workload task 2
R3     =    Time to parse data from the JSON file in workload task 3
R4     =    Time to parse data from the Protocol Buffer file in task 4
C1     =    The harmonic mean of the average draws/s for each part of workload task 5.
C2     =    The harmonic mean of the average draws/s for each part of workload task 6.
C3     =    The harmonic mean of the average draws/s for each part of workload task 7.
C4     =    The average draws/s for the duration of workload task 8. 
C5     =    The harmonic mean of the average draws/s for each part of workload task 9.