There is a inefficiency with address creation.
In order to calculate address 101, you need address 100, so they have to be created in sequence.
Assuming you only have 100 addresses, then, when creating address 110, it has to calculate 101, 102 up to 110.
If you have 100 addresses and you ask for 1000 more, it will create them in the following order
Create(101), creates 101
Create(102) creates 101 and then 102
Create(103) creates 101, 102 and then 103
...
Create(1000), creates 101, 102, 103, ...., 999 and then 1000
What it should do is just run create(1000) and use the 900 addresses created. However, it loops, through create(101) to create(1000).
If you ask for 100 addresses at once, it has to calculate around 5000 addresses due to this system. If you ask for 500, then it calculates 125000 addresses.
This might be fixed in 0.9, but it means that you must ask it for addresses in short steps.
I think unlocking the wallet might help.
This has been a known issue for a while. The modularization of the code made it difficult for me to avoid the N
2 runtime for address generation -- it really wasn't
that hard to fix, but I had other priorities.
On that note, goatpig went ahead and fixed it in his branch, so it should appear in 0.91.