I just set keypoolrefill to 100000 on a core testnet wallet. When the log showed ~20k addresses generated the UI stopped working.
2015-12-20 22:37:42 Pre-allocating up to position 0x8000000 in blk00022.dat
2015-12-20 22:37:43 UpdateTip: new best=0000000000000020542d296e1cf56f991f838814583b8ba1473687c2cc2f0d67 height=605658 log2_work=66.751446 tx=7191458 date=2015-11-17 01:19:20 progress=0.998588 cache=5.8MiB(21617tx)
2015-12-20 22:37:43 keypool added key 118, size=101
2015-12-20 22:37:43 keypool added key 119, size=102
2015-12-20 22:37:43 keypool added key 120, size=103
2015-12-20 22:37:43 keypool added key 121, size=104
2015-12-20 22:37:43 keypool added key 122, size=105
2015-12-20 22:37:43 keypool added key 123, size=106
...
2015-12-20 22:48:48 keypool added key 100017, size=100000
2015-12-20 22:48:48 keypool added key 100018, size=100001
2015-12-20 22:48:48 keypool reserve 18
2015-12-20 22:48:48 keypool return 18
UI is working fine now. Wallet.dat is 64552 KB in size. Its still synchronizing, as I didnt use the testnet wallet for a while. Start up is slightly slower than my regular wallet with < 300 keys.
{
"walletversion" : 60000,
"balance" : 0.00000000,
"unconfirmed_balance" : 0.00000000,
"immature_balance" : 0.00000000,
"txcount" : 36,
"keypoololdest" : 1447094366,
"keypoolsize" : 100001
}
Let me test one more thing here. A wallet file that is >421000 kb in size. It contains ~100 private keys that were disclosed during one of the earlier spam attacks on the network.
2015-12-20 23:08:59 init message: Loading wallet...
2015-12-20 23:09:05 nFileVersion = 110000
2015-12-20 23:09:05 Keys: 203 plaintext, 0 encrypted, 203 w/ metadata, 203 total
2015-12-20 23:09:05 wallet 5991ms
2015-12-20 23:09:05 init message: Rescanning...
2015-12-20 23:09:05 Rescanning last 22988 blocks (from block 366433)...
2015-12-20 23:10:05 Still rescanning. At block 371174. Progress=0.878292
2015-12-20 23:11:05 Still rescanning. At block 376108. Progress=0.915589
2015-12-20 23:12:05 Still rescanning. At block 381165. Progress=0.951302
2015-12-20 23:13:05 Still rescanning. At block 385897. Progress=0.980783
2015-12-20 23:13:54 rescan 289616ms
2015-12-20 23:13:54 init message: Activating best chain...
Once loaded the UI is unusable. It constantly uses 100% of one of the cores and eats >1.2 GB memory (compared to regular ~200-300MB). Last log entry was 8 minutes ago. I have to assume it crashed now.
To sum it up. A high load of transactions puts more straing on core than a high load of addresses. I would assume this is the same for watch only wallets.