fixaddsol: Major performance improvement: 29.1 seconds.

Use dictionaries instead of creating custom array classes.
That way co[] and si[] subscripts are much faster.
This commit is contained in:
Don Cross
2019-07-03 21:46:18 -04:00
parent 835d6e524b
commit 0ac3fa708f
3 changed files with 12 additions and 60 deletions

View File

@@ -714,27 +714,11 @@ def _spin(angle, pos1):
#----------------------------------------------------------------------------
# BEGIN CalcMoon
class _Array1:
def __init__(self, xmin, xmax):
self.min = xmin
self.array = [0] * (xmax - xmin + 1)
def _Array1(xmin, xmax):
return dict((key, 0) for key in range(xmin, 1+xmax))
def __getitem__(self, key):
return self.array[key - self.min]
def __setitem__(self, key, value):
self.array[key - self.min] = value
class _Array2:
def __init__(self, xmin, xmax, ymin, ymax):
self.min = xmin
self.array = [_Array1(ymin, ymax) for i in range(xmax - xmin + 1)]
def __getitem__(self, key):
return self.array[key - self.min]
def __setitem__(self, key, value):
self.array[key - self.min] = value
def _Array2(xmin, xmax, ymin, ymax):
return dict((key, _Array1(ymin, ymax)) for key in range(xmin, 1+xmax))
class _moonpos:
def __init__(self, lon, lat, dist):