1
0

invoices: improve perf by caching lnaddr even earlier

During wallet-open, we load all invoices/payreqs. This involved decoding the lnaddrs twice.
Now we only decode once.

For a wallet with ~1000 payreqs, this noticeably sped up wallet-open:
(before:)
8.83 | D | util.profiler | Daemon._load_wallet 6.4317 sec
(after:)
5.69 | D | util.profiler | Daemon._load_wallet 3.4450 sec

It is very expensive to parse all the lnaddrs...
This commit is contained in:
SomberNight
2023-02-08 23:36:36 +00:00
parent 8a53a3201c
commit ad0b853cd9
2 changed files with 3 additions and 1 deletions

View File

@@ -463,6 +463,7 @@ class Daemon(Logger):
return wallet
@staticmethod
@profiler
def _load_wallet(
path,
password,

View File

@@ -196,7 +196,8 @@ class Invoice(StoredObject):
@lightning_invoice.validator
def _validate_invoice_str(self, attribute, value):
if value is not None:
lndecode(value) # this checks the str can be decoded
lnaddr = lndecode(value) # this checks the str can be decoded
self.__lnaddr = lnaddr # save it, just to avoid having to recompute later
@amount_msat.validator
def _validate_amount(self, attribute, value):