From b3f913340c0e3a273c500cd74416a16f2e5fab9a Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Thu, 14 Nov 2019 18:54:14 +0000 Subject: [PATCH] make Mnemonic.mnemonic_decode faster list.index(word) is O(n) dict[word] is O(log(n)) This makes a difference for Mnemonic.make_seed which calls self.mnemonic_decode repeatedly. --- electrum/mnemonic.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/electrum/mnemonic.py b/electrum/mnemonic.py index 9aa386df6..57be30d9b 100644 --- a/electrum/mnemonic.py +++ b/electrum/mnemonic.py @@ -126,6 +126,7 @@ class Mnemonic(Logger): self.logger.info(f'language {lang}') filename = filenames.get(lang[0:2], 'english.txt') self.wordlist = load_wordlist(filename) + self.wordlist_indexes = {w: i for i, w in enumerate(self.wordlist)} self.logger.info(f"wordlist has {len(self.wordlist)} words") @classmethod @@ -156,7 +157,7 @@ class Mnemonic(Logger): i = 0 while words: w = words.pop() - k = self.wordlist.index(w) + k = self.wordlist_indexes[w] i = i*n + k return i