Functional vs for loop

Benchmark created on


Setup

const dealTeamsWithAccess = {
    1: [1, 2, 3],
    2: [2, 3],
    3: [3],
    4: [1, 4],
    5: [1, 4],
    6: [4, 5],
    7: [1, 4],
    8: [1, 4],
    9: [1, 4],
    10: [1, 4],
    11: [1, 4],
    12: [1, 4],
    13: [2],
    14: [2],
    15: [2],
    16: [1],
    17: [2,3],
    18: [3,2,1],
    19: [1,2,3,4],
    20: [1],
    21: [3,2],
    22: [2,3],
    23: [1],
    24: [2],
};



const getAccessForDealTeamForLoop = (
    dealTeamsWithAccess,
    dealTeamId
) => {
    const accessForDealTeam = [];

    const prevAccessEntries = Object.entries(dealTeamsWithAccess);
    for (let i = 0; i < prevAccessEntries.length; i++) {
        const [fileId, dealTeamIds] = prevAccessEntries[i];
        if (dealTeamIds.includes(dealTeamId)) {
            accessForDealTeam.push(fileId);
        }
    }

    return accessForDealTeam;
};



const getAccessForDealTeamFilterAndMap = (
    dealTeamsWithAccess,
    dealTeamId
) => {
    return Object.entries(dealTeamsWithAccess)
        .filter(([_, dealTeamIds]) => dealTeamIds.includes(dealTeamId))
        .map(([fileId, _]) => fileId);
};



const getAccessForDealTeamReduce = (dealTeamsWithAccess, dealTeamId) => {
    return Object.entries(dealTeamsWithAccess).reduce((acc, [fileId, dealTeamIds]) => {
        if (dealTeamIds.includes(dealTeamId)) {
            acc.push(fileId);
        }
        return acc;
    }, []);
};

Test runner

Ready to run.

Testing in
TestOps/sec
For loop
getAccessForDealTeamForLoop(dealTeamsWithAccess, 2)
ready
Filter and Map
getAccessForDealTeamFilterAndMap(dealTeamsWithAccess, 2)
ready
Reduce
getAccessForDealTeamReduce(dealTeamsWithAccess, 2)
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.