It will always be slow if contacting a live node for data such as account balance.
My preferred way is to use Amberdata's APIAPI which is much faster. All you need is an api key then you can:
curl \
-X GET \
-H "accept: application/json" \
-H "x-api-key: <your-api-key>" \
"https://web3api.io/api/v1/addresses/0xb7e3abd75119fe3cfc76015193226b21fc19230b/account-balances/latest"
Which will return the data like so:
{
"status": 200,
"title": "OK",
"description": "Successful request",
"payload": {
"address": "0x06012c8cf97bead5deae237070f9587f8e7a266d",
"blockNumber": "7446776",
"timestamp": 1553638186000,
"timestampNanoseconds": 0,
"value": "65103167814228166337",
"blockchainId": "1c9c969065fcd1cf"
}
}
Let me know if that works for you! 😃
EDIT:
There is also a node wrapper package!