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)
|
- name: (item)
|
||||||
stmt: q = ureg['meter']
|
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
|
- name: build cache
|
||||||
setup: |
|
setup: |
|
||||||
import pint
|
import pint
|
||||||
|
@ -790,6 +790,9 @@ class UnitRegistry(object):
|
|||||||
if isinstance(input_units, string_types):
|
if isinstance(input_units, string_types):
|
||||||
input_units = ParserHelper.from_string(input_units)
|
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():
|
for key, value in input_units.items():
|
||||||
if _is_dim(key):
|
if _is_dim(key):
|
||||||
reg = self._dimensions[key]
|
reg = self._dimensions[key]
|
||||||
@ -828,6 +831,9 @@ class UnitRegistry(object):
|
|||||||
if isinstance(input_units, string_types):
|
if isinstance(input_units, string_types):
|
||||||
input_units = ParserHelper.from_string(input_units)
|
input_units = ParserHelper.from_string(input_units)
|
||||||
|
|
||||||
|
if input_units in self._base_units_cache:
|
||||||
|
return self._base_units_cache[input_units]
|
||||||
|
|
||||||
factor = 1.
|
factor = 1.
|
||||||
units = UnitsContainer()
|
units = UnitsContainer()
|
||||||
for key, value in input_units.items():
|
for key, value in input_units.items():
|
||||||
|
Loading…
Reference in New Issue
Block a user