Почему производительность Redis-бенчмарка отличается от реального бенчмаркинга приложения - PullRequest
0 голосов
/ 17 октября 2019
redis-benchmark -n 1000000 -t set -q -c 1

Вышеуказанный тест обеспечивает 19k запросов в секунду

Но мой Nodejs Benchmarking для команды set предоставляет только 10k запросов в секунду

Так почемув тесте есть 19 000 запросов в секунду по сравнению с моим приложением nodejs 10 000 запросов в секунду?

const Redis = require("ioredis");
const {
    performance
} = require('perf_hooks');

// Ready the Redis client A
const RedisAClient = new Redis({ host: "127.0.0.1", port: 6379 });

// Call our benchmarking
Benchmarking();


// Our benchmarking function
async function Benchmarking() {

    // Sleep async function
    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }


    const loopNumbers = 10000;
    let processedTasks = 0;
    const WholeTime = performance.now();

    for (let i = 0; i < loopNumbers; i++) {

        // Call redis for set command
         RedisAClient.set("testing", i, function (err, reply) {

            processedTasks++;
        });

        // If it is last loop then log the benchmark
        if (i == loopNumbers - 1) {

            // Wait for the all tasks to complete
            while (processedTasks != (loopNumbers)) { await sleep(1); }

            console.log((performance.now() - WholeTime) + "ms")

        }

    }

}
...