Query performance is critical, and my tests show that we are orders of magnitude faster than ElectrumX and Fulcrum (and no doubt BC but I haven't tested). Making a node useful means providing features that are always being bolted on to bitcoind. We provide the full chain Electrum address index during sync, for about 30 mins extra presently. That takes ElectrumX and Fulcrum up to a week when operating against a fully-synced and local bitcoind. So where is the performance issue? probably both. The ability to expose the node to high volume query is important, as otherwise yet again it requires full extraction to a capable query server making the node much less usable. We worked through this in BS in versions 1-3 using ZeroMQ and it's mature. Yet another one of Amir's solid design decisions (same with proactor async and mmap hashmap store).
(edited)