ChannelDB.load_data: add comment re bad performance, and some speed-up
On my machine, ChannelDB.load_data() went from around 6 sec to 4 sec, just by commenting out that assert in lnmsg. related #6006
This commit is contained in:
@@ -581,6 +581,9 @@ class ChannelDB(SqlDB):
|
|||||||
@sql
|
@sql
|
||||||
@profiler
|
@profiler
|
||||||
def load_data(self):
|
def load_data(self):
|
||||||
|
# Note: this method takes several seconds... mostly due to lnmsg.decode_msg being slow.
|
||||||
|
# I believe lnmsg (and lightning.json) will need a rewrite anyway, so instead of tweaking
|
||||||
|
# load_data() here, that should be done. see #6006
|
||||||
c = self.conn.cursor()
|
c = self.conn.cursor()
|
||||||
c.execute("""SELECT * FROM address""")
|
c.execute("""SELECT * FROM address""")
|
||||||
for x in c:
|
for x in c:
|
||||||
|
|||||||
@@ -57,14 +57,13 @@ def _make_handler(msg_name: str, v: dict) -> Callable[[bytes], Tuple[str, dict]]
|
|||||||
Returns function taking bytes
|
Returns function taking bytes
|
||||||
"""
|
"""
|
||||||
def handler(data: bytes) -> Tuple[str, dict]:
|
def handler(data: bytes) -> Tuple[str, dict]:
|
||||||
nonlocal msg_name, v
|
|
||||||
ma = {} # map of field name -> field data; after parsing msg
|
ma = {} # map of field name -> field data; after parsing msg
|
||||||
pos = 0
|
pos = 0
|
||||||
for fieldname in v["payload"]:
|
for fieldname in v["payload"]:
|
||||||
poslenMap = v["payload"][fieldname]
|
poslenMap = v["payload"][fieldname]
|
||||||
if "feature" in poslenMap and pos == len(data):
|
if "feature" in poslenMap and pos == len(data):
|
||||||
continue
|
continue
|
||||||
assert pos == _eval_exp_with_ctx(poslenMap["position"], ma)
|
#assert pos == _eval_exp_with_ctx(poslenMap["position"], ma) # this assert is expensive...
|
||||||
length = poslenMap["length"]
|
length = poslenMap["length"]
|
||||||
length = _eval_exp_with_ctx(length, ma)
|
length = _eval_exp_with_ctx(length, ma)
|
||||||
ma[fieldname] = data[pos:pos+length]
|
ma[fieldname] = data[pos:pos+length]
|
||||||
|
|||||||
Reference in New Issue
Block a user