Solver: Mage: read_bin: Optimize iprofiles.

opt-result
Pierre-Antoine 2026-06-18 15:02:34 +02:00
parent 388368adad
commit d87db5fd48
1 changed files with 6 additions and 18 deletions

View File

@ -1083,7 +1083,7 @@ class Mage8(Mage):
newline()
reachs = []
iprofiles = {}
iprofiles = []
profile_len = []
reach_offset = {}
@ -1099,14 +1099,14 @@ class Mage8(Mage):
i2 = data[2*i+1] - 1
# Add profile id correspondance to reach
key = (i1, i2)
iprofiles[key] = r
for key in range(i1, i2 + 1):
iprofiles.append(i)
# Profile ID offset
reach_offset[r] = i1
profile_len.append(i2-i1+1)
logger.debug(f"read_bin: iprofiles = {iprofiles}")
logger.debug(f"read_bin: iprofiles = {len(iprofiles)}")
endline()
@ -1124,18 +1124,6 @@ class Mage8(Mage):
# Data
newline()
@timer
def ip_to_r(i): return iprofiles[
next(
filter(
lambda k: k[0] <= i <= k[1],
iprofiles
)
)
]
@timer
def ip_to_ri(r, i): return i - reach_offset[r]
# check results and geometry consistency
for i, r in enumerate(reachs):
lp = len(r.profiles)
@ -1165,9 +1153,9 @@ class Mage8(Mage):
if key in ["Z", "Q"]:
for i, d in enumerate(data):
# Get reach corresponding to profile ID
reach = ip_to_r(i)
reach = reachs[iprofiles[i]]
# Get profile id in reach
ri = ip_to_ri(reach, i)
ri = i - reach_offset[reach]
# Set data for profile RI
reach.set(ri, timestamp, key, d)