blob: b9dd39b14ef023e9ea027e7c4c53141da20615e2 [file] [edit]
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Python port of legacy_unit_info.html. This is a mapping of various units
# reported by gtest perf tests to histogram units, including improvement
# direction and conversion factors.
# Note that some of the converted names don't match up exactly with the ones
# in the HTML file, as unit names are sometimes different between the two
# implementations. For example, timeDurationInMs in the JavaScript
# implementation is ms in the Python implementation.
IMPROVEMENT_DIRECTION_DONT_CARE = ''
IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER = '_smallerIsBetter'
IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER = '_biggerIsBetter'
class LegacyUnit(object):
"""Simple object for storing data to improve readability."""
def __init__(self, name, improvement_direction, conversion_factor=1):
assert improvement_direction in [
IMPROVEMENT_DIRECTION_DONT_CARE,
IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER,
IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER]
self._name = name
self._improvement_direction = improvement_direction
self._conversion_factor = conversion_factor
@property
def name(self):
return self._name + self._improvement_direction
@property
def conversion_factor(self):
return self._conversion_factor
def AsTuple(self):
return self.name, self.conversion_factor
LEGACY_UNIT_INFO = {
'%': LegacyUnit('n%', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_DONT_CARE),
'Celsius': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'Hz': LegacyUnit('Hz', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'KB': LegacyUnit('sizeInBytes', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER,
conversion_factor=1024),
'MB': LegacyUnit('sizeInBytes', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER,
conversion_factor=(1024 * 1024)),
'ObjectsAt30FPS': LegacyUnit('unitless',
IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'available_kB': LegacyUnit('sizeInBytes',
IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER,
conversion_factor=1024),
'bit/s': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'bytes': LegacyUnit('sizeInBytes', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'chars/s': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'commit_count': LegacyUnit('count', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'count': LegacyUnit('count', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'coverage%': LegacyUnit('n%', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'dB': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'files': LegacyUnit('count', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'fps': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'frame_count': LegacyUnit('count', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'frame_time': LegacyUnit('ms', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'frames': LegacyUnit('count', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'garbage_collections': LegacyUnit('count',
IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'idle%': LegacyUnit('n%', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'janks': LegacyUnit('count', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'lines': LegacyUnit('count', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'mWh': LegacyUnit('J', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER,
conversion_factor=3.6),
'milliseconds': LegacyUnit('ms', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'milliseconds-per-frame': LegacyUnit(
'ms', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'minutes': LegacyUnit('msBestFitFormat',
IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER,
conversion_factor=60000),
'mips': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'mpixels_sec': LegacyUnit('unitless',
IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'ms': LegacyUnit('ms', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'mtri_sec': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'mvtx_sec': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'objects (bigger is better)': LegacyUnit(
'count', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'packets': LegacyUnit('count', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'percent': LegacyUnit('n%', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'points': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'ports': LegacyUnit('count', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'reduction%': LegacyUnit('n%', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'relocs': LegacyUnit('count', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'runs/s': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'score (bigger is better)': LegacyUnit(
'unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'seconds': LegacyUnit('ms', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER,
conversion_factor=1000),
'tokens/s': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_BIGGER_IS_BETTER),
'tasks': LegacyUnit('unitless', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER),
'us': LegacyUnit('msBestFitFormat', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER,
conversion_factor=0.001),
'ns': LegacyUnit('msBestFitFormat', IMPROVEMENT_DIRECTION_SMALLER_IS_BETTER,
conversion_factor=0.000001),
}
# Add duplicate units here
LEGACY_UNIT_INFO['frames-per-second'] = LEGACY_UNIT_INFO['fps']
LEGACY_UNIT_INFO['kb'] = LEGACY_UNIT_INFO['KB']
LEGACY_UNIT_INFO['ms'] = LEGACY_UNIT_INFO['milliseconds']
LEGACY_UNIT_INFO['runs_per_s'] = LEGACY_UNIT_INFO['runs/s']
LEGACY_UNIT_INFO['runs_per_second'] = LEGACY_UNIT_INFO['runs/s']
LEGACY_UNIT_INFO['score'] = LEGACY_UNIT_INFO['score (bigger is better)']
LEGACY_UNIT_INFO['score_(bigger_is_better)'] = LEGACY_UNIT_INFO['score']