This snippet (source & exe attached) compares the time needed to sort a text array in case-sensitive vs case-insensitive mode. On my cpu, sorting case-insensitive is roughly a factor 2.5 slower, if somebody has a better algo, I'd like to know about it:
include \masm32\MasmBasic\MasmBasic.inc ; download
Init
PrintCpu 0
Recall "SortTemp.txt", L$() ; any text file will do
NanoTimer()
QSort L$()
PrintLine Str$("\nsorting %i lines case-insensitive took ", L$(?)), NanoTimer$()
For_ ecx=0 To L$(?)-1
sub L$(?), 3
.if ecx<3 || ecx>=eax
.if Zero?
PrintLine "..."
.endif
PrintLine L$(ecx)
.endif
Next
Print
Recall "SortTemp.txt", L$()
NanoTimer()
QSortMode 0 ; force case-sensitive sort
QSort L$()
PrintLine Str$("sorting %i lines case-sensitive took ", L$(?)), NanoTimer$()
For_ ecx=0 To L$(?)-1
sub L$(?), 3
.if ecx<3 || ecx>=eax
.if Zero?
PrintLine "..."
.endif
PrintLine L$(ecx)
.endif
Next
EndOfCodeResults for an array of random strings:
Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
sorting 1000000 lines case-insensitive took 1434 ms
AAaAHZybMJfIBMDPTlGpjvUIKUAUarYYBhwoQzXDbBiAcpCJBdWibuPGKXCeSrAcOsQVouKGLUtXF
aAABoYraUmtdbUjgRDbugWslpjAUIKuszBiOYgbGgDwawBsyfUTodDuktDyLUCdtDSYqIFfwxoBlKDfbiuHQ
aaadeaEoIYWvHUzkSOtliXprvQLwLRmQtZnACEWprRsosQEBCExqPRkIFHyxbkWHovUZtDOKw
...
ZZzyzetRGgWITClgQOTutTCdCiuHMxPNPuxGIsUFqStMIuIRPqlWpHdzyckcajQMCgNTbYzilNuy
zzZzcsrZGTHbiajufJIMXwWdbKFncznEBmlSLCGJBKFTHoixDzzNgeXSRohyfJHAQreI
zZZzToOoFStspcNrVaEIfjsxTNFZWUIwVWqxrzppJBjnxhbFgXmoCjUQxitzjpsLsmkTJefTDsKUKDj
sorting 1000000 lines case-sensitive took 582 ms
AAAJkbfOkQBObDHcbTIwHpqfZhoeEAOdznaOpVJqBwanparynNfGQbaMfZwqeWVzuereGocrnKWbAx
AAAKDBqCLIvtYhNOwRHDkUdYhtCnqVlAtRxBIyOmZtyRTJmmduoLcogeGKDYzS
AAANyurgtXuGMSDjUiphJpjDEIXsqWblivOefMURODFFRLEmyNHboCtnRgrrGsTpQXBZ
...
zzzMNTYBXQesyiSPhDSnEMllmqJyPOetjQASwTjPPdMGALxaTsXIBwpiDnRqaG
zzzWKRnlAPdJrfgIgiHjbJTvoMgrRnxVAukqhhjMqshOgVAuaGceqItZADoDlNBtykFZjwKyKuMhTJeu
zzzYZAgWBUtSZfUmlAWnFFRpDcGgwdOFndrhSJZcyMsgkvLnTOTRmUtwjKvNKJndDYagMFDBnZQduJzTADOTbIsyx