For me, if I was faced with 2 possible solutions and was concerned about performance, I would simply test both solutions within a loop and time how long it takes to do n number of loops.
Something like this
{ ClassMethod SolutionA() As %Status
{
set x=9
quit $$$OK
} ClassMethod SolutionB() As %Integer
{
set x=9
quit 1
} ClassMethod TestSolutions()
{
write "SolutionA Start : "_$zdatetime($ztimestamp,3,1,3),!
for i=1:1:90000000 {
set ret=..SolutionA()
}
write "SolutionA End : "_$zdatetime($ztimestamp,3,1,3),!
write "SolutionB Start : "_$zdatetime($ztimestamp,3,1,3),!
for i=1:1:90000000 {
set ret=..SolutionB()
}
write "SolutionB End : "_$zdatetime($ztimestamp,3,1,3),!
} }
I have just had to do something similar, but needed it to be Case Sensitive.
The only solution that I could find that would be Case Sensitive was the SQL solution.
You could write your own std deviation ClassMethod() in ObjectScript. You then have the flexibility to use that however you want.
The logic doesn't look that complex, and for a few thousand rows would run fast enough in Object Script.
See link below for the calculations you need to do:
https://www.scribbr.com/statistics/standard-deviation/
You can validate your results with the STDDEV(SQL) method, which will also allow you to compare performance.