Use the cache in get_base_units and get_dimensionality. Added benchmarks.

This commit is contained in:
Hernan Grecco 2014-01-23 21:08:34 -03:00
parent 60a40c83be
commit 10247f49df
2 changed files with 20 additions and 0 deletions

View File

@ -21,6 +21,20 @@
- name: (item)
stmt: q = ureg['meter']
- name: base units
setup: |
import pint
ureg = pint.UnitRegistry()
stmts:
- name: meter
stmt: ureg.get_base_units('meter')
- name: yard
stmt: ureg.get_base_units('yard')
- name: meter / second
stmt: ureg.get_base_units('meter / second')
- name: yard / minute
stmt: ureg.get_base_units('yard / minute')
- name: build cache
setup: |
import pint

View File

@ -790,6 +790,9 @@ class UnitRegistry(object):
if isinstance(input_units, string_types):
input_units = ParserHelper.from_string(input_units)
if input_units in self._base_units_cache:
return self._dimensionality_cache[input_units]
for key, value in input_units.items():
if _is_dim(key):
reg = self._dimensions[key]
@ -828,6 +831,9 @@ class UnitRegistry(object):
if isinstance(input_units, string_types):
input_units = ParserHelper.from_string(input_units)
if input_units in self._base_units_cache:
return self._base_units_cache[input_units]
factor = 1.
units = UnitsContainer()
for key, value in input_units.items():