Last active
December 29, 2021 16:36
-
-
Save imharvol/841b4fc942c59cd782a186c6dbac7b97 to your computer and use it in GitHub Desktop.
A web3 endpoint speed evaluator: calculates average and median response time.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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