Skip to content

Instantly share code, notes, and snippets.

@imharvol
Last active December 29, 2021 16:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save imharvol/841b4fc942c59cd782a186c6dbac7b97 to your computer and use it in GitHub Desktop.
Save imharvol/841b4fc942c59cd782a186c6dbac7b97 to your computer and use it in GitHub Desktop.
A web3 endpoint speed evaluator: calculates average and median response time.
// npm i median web3
// Usage: node index.js web3Endpoint
const median = require('median')
const Web3 = require('web3')
if (process.argv.length !== 3) {
console.log('Usage: node index.js web3Endpoint')
process.exit(1)
}
const requests = 50
const web3Endpoint = process.argv[2]
const web3 = new Web3(web3Endpoint)
const main = async () => {
console.log(`Testing endpoint ${web3Endpoint} with ${requests} requests\n`)
let totalResponseTime = 0
const responseTimeArray = []
let averageResponseTime, responseTimeMedian
for (let i = 0; i < 50; i++) {
const start = Date.now()
const blockNumber = await web3.eth.getBlockNumber()
const end = Date.now()
const responseTime = end - start
totalResponseTime += responseTime
responseTimeArray.push(responseTime)
averageResponseTime = totalResponseTime / (i + 1)
responseTimeMedian = median(responseTimeArray)
console.log(`${i + 1} | Latest: ${responseTime} | Average: ${averageResponseTime} | Median: ${responseTimeMedian} | Block number: ${blockNumber}`)
}
console.log(`\nAfter ${requests} iterations | Average: ${averageResponseTime} | Median: ${responseTimeMedian}`)
}
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment