Use the cache in get_base_units and get_dimensionality. Added benchmarks.
This commit is contained in:
parent
60a40c83be
commit
10247f49df
@ -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
|
||||
|
@ -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():
|
||||
|
Loading…
Reference in New Issue
Block a user