We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

How to increase the speed of my code execution time?

Hari1
Mega Sage

Hi,

My code execution time on a average of 15-18 seconds. I need to decrease my code execution time to less than 5 seconds. Below is my code.

var usedByOrgVal = "All";

 var arrFinCount = [];

 var arr = [];

 if (usedByOrgVal == "All") {
     arr = ["operational_status!=6", "operational_status!=6^owned_by!=null", "operational_status!=6^u_in_coverage=Yes", "operational_status!=6^u_complete=Yes", "operational_status!=6^u_correct=Yes", "operational_status!=6^u_in_coverage=No", "operational_status!=6^u_complete=No", "operational_status!=6^u_correct=No", "nameISNOTEMPTY^operational_status!=6^u_resp_orgISNOTEMPTY^NQnameISNOTEMPTY^operational_status!=6^u_resp_orgISEMPTY^assetISEMPTY"];
     filterList(arr);
 }

 function filterList(arrVal) {
     for (var i = 0; i < arrVal.length; i++) {
         var cal = new GlideRecord("cmdb_ci_server");
         cal.addEncodedQuery(arrVal[i]);
         cal.query();
         arrFinCount.push(cal.getRowCount());
     }
 }

 gs.info("arrFinCount: " + JSON.stringify(arrFinCount));

 var obj = {
     Ownership: [{
         Value: arrFinCount[1],
         Percentage: isNaN(((arrFinCount[1] / arrFinCount[0]) * 100).toFixed(2)) ? "0.00" : ((arrFinCount[1] / arrFinCount[0]) * 100).toFixed(2),
     }],
     Coverage: [{
         InCoverage: arrFinCount[2],
         OutOfCoverage: arrFinCount[5],
         Percentage: isNaN(((arrFinCount[2] / arrFinCount[0]) * 100).toFixed(2)) ? "0.00" : ((arrFinCount[2] / arrFinCount[0]) * 100).toFixed(2),
     }],
     Completeness: [{
         Complete: arrFinCount[3],
         NotComplete: arrFinCount[6],
         Percentage: isNaN(((arrFinCount[3] / arrFinCount[0]) * 100).toFixed(2)) ? "0.00" : ((arrFinCount[3] / arrFinCount[0]) * 100).toFixed(2),
     }],
     Correctness: [{
         Correct: arrFinCount[4],
         NotCorrect: arrFinCount[7],
         Percentage: isNaN(((arrFinCount[4] / arrFinCount[0]) * 100).toFixed(2)) ? "0.00" : ((arrFinCount[4] / arrFinCount[0]) * 100).toFixed(2),
     }],
     ActiveServerCount: [{
         Count: arrFinCount[8]
     }],
 };

 gs.info("obj:" + JSON.stringify(obj));

 return obj;

Can anyone please provide any solution for the above code.

10 REPLIES 10

Ankur Bawiskar
Tera Patron

@Hari1 

can you try this?

var usedByOrgVal = "All";
var arrFinCount = [];

if (usedByOrgVal == "All") {
    var arr = [
        "operational_status!=6",
        "operational_status!=6^owned_by!=null",
        "operational_status!=6^u_in_coverage=Yes",
        "operational_status!=6^u_complete=Yes",
        "operational_status!=6^u_correct=Yes",
        "operational_status!=6^u_in_coverage=No",
        "operational_status!=6^u_complete=No",
        "operational_status!=6^u_correct=No",
        "nameISNOTEMPTY^operational_status!=6^u_resp_orgISNOTEMPTY^NQnameISNOTEMPTY^operational_status!=6^u_resp_orgISEMPTY^assetISEMPTY"
    ];
    filterList(arr);
}

function filterList(arrVal) {
    var cal = new GlideRecord("cmdb_ci_server");
    var query = arrVal.join('^NQ');
    cal.addEncodedQuery(query);
    cal.query();

    var counts = {};
    while (cal.next()) {
        for (var i = 0; i < arrVal.length; i++) {
            if (cal.match(arrVal[i])) {
                counts[i] = (counts[i] || 0) + 1;
            }
        }
    }

    for (var i = 0; i < arrVal.length; i++) {
        arrFinCount.push(counts[i] || 0);
    }
}

gs.info("arrFinCount: " + JSON.stringify(arrFinCount));

var obj = {
    Ownership: [{
        Value: arrFinCount[1],
        Percentage: isNaN(((arrFinCount[1] / arrFinCount[0]) * 100).toFixed(2)) ? "0.00" : ((arrFinCount[1] / arrFinCount[0]) * 100).toFixed(2),
    }],
    Coverage: [{
        InCoverage: arrFinCount[2],
        OutOfCoverage: arrFinCount[5],
        Percentage: isNaN(((arrFinCount[2] / arrFinCount[0]) * 100).toFixed(2)) ? "0.00" : ((arrFinCount[2] / arrFinCount[0]) * 100).toFixed(2),
    }],
    Completeness: [{
        Complete: arrFinCount[3],
        NotComplete: arrFinCount[6],
        Percentage: isNaN(((arrFinCount[3] / arrFinCount[0]) * 100).toFixed(2)) ? "0.00" : ((arrFinCount[3] / arrFinCount[0]) * 100).toFixed(2),
    }],
    Correctness: [{
        Correct: arrFinCount[4],
        NotCorrect: arrFinCount[7],
        Percentage: isNaN(((arrFinCount[4] / arrFinCount[0]) * 100).toFixed(2)) ? "0.00" : ((arrFinCount[4] / arrFinCount[0]) * 100).toFixed(2),
    }],
    ActiveServerCount: [{
        Count: arrFinCount[8]
    }],
};

gs.info("obj:" + JSON.stringify(obj));

return obj;

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 10x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

@Ankur BawiskarThe above code is not working, I see all the queries return 0 and the execution time is 18 seconds. Below is the log.

 

Hari1_0-1737040081204.png

 

 

 

jcmings
Mega Sage

Try pasting this into ChatGPT and asking it to optimize

Bert_c1
Kilo Patron

Add DB index on your custom fields.