According to a profiling data from a large number of servers at Google, strings.ToLower and strings.ToUpper is within the top 300 functions by CPU time. I believe there can be a significant speed-up by specifically handling ASCII characters first before falling back to the unicode.ToLower and unicode.ToUpper functions.