JSFiddle - React, Tailwind, and code Playground

by svtux

JavaScript

var testFlag = 0;

benchmark();

function benchmark(ex) {
    if (testFlag) {
        stopTest(true);
    }
    
    var m = 100;
    var num = 10000;
//    var ex = 10;//%

    startTest();
    
    var tt = new Array(num);
    var kX = 100 / ex;
    for (var i = 0; i < tt.length; i++) {
        if (i % kX == 0) {
            tt[i] = i;
        } else {
            tt[i] = '' + i;
        }
    }
    
    var t1 = t2 = 0;

    for (var k = 0; k < m; k++) {

        var date = new Date();
        testIfCondition(tt);
        var dT = new Date() - date;
        t1 += dT;
    
        setBenchLastTest(dT);
        
        date = new Date();
        testTryCatch(tt);
        dT = new Date() - date;
        t2 += dT;
        
        setBenchLastTest(dT);
        
        setProgress(k + 1, m);
        
        if (!testFlag) break;
    }
    
    info('Average time IF-ELSE: ' + t1 / m);
    info('Average time TRY-CATCH: ' + t2 / m);
    
    stopTest();
}

function testIfCondition(tt) {
    for (var j = 0; j < tt.length; j++) {
        if (typeof tt[j] == 'string') {
            tt[j].toLowerCase();
        }
    }
}

function testTryCatch(tt) {
    for (var j = 0; j < tt.length; j++) {
        try {
            tt[j].toLowerCase();
        } catch(e) {
            //
        }
    }
}

function setProgress(i, total) {
    info('Прогресс выполнения тестов: ' + i + " / " + total);
    info('================================');
}

function setBenchLastTest(t) {
    info('Время выполнения последнего теста:' + t);
}

function startTest() {
    testFlag = 1;
    info('тест начат');
}

function stopTest(b) {
    testFlag = 0;
    if (b) {
        info('тест прерван');
    } else {
        info('тест завершён');
    }
}

function info(msg) {
    console.log(msg);
}