How to increase the speed of my code execution time?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-16-2025 06:47 AM
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-16-2025 06:59 AM
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.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-16-2025 07:08 AM
@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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-16-2025 09:23 AM
Try pasting this into ChatGPT and asking it to optimize
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-16-2025 09:50 AM
Add DB index on your custom fields.