TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# Char Lowercase Optimization

Optimize char lowercase and uppercase methods. A benchmark is provided.
Char lowercase. A character can be lowercased with various algorithms. Some approaches are faster than others. And some approaches handle special cases better than others.Optimization
An optimization. Here we see alternative lower and upper C# methods on char, with a benchmark. These methods can help certain algorithms go faster.Benchmark
This class can lowercase and uppercase a char in two different ways. The Framework methods, char.ToLower and char.ToUpper, work on a wider range of characters than these methods.char.ToLower

Important: You can tune these methods to work on other characters. An offset into a string can be provided.

C# program that implements lowercase optimization public static class Program { static string _lookupStringL; static string _lookupStringU; public static char ToLowerFast(char c) { // Use char lookup table. return _lookupStringL[c]; } public static char ToUpperFast(char c) { // Use char lookup table. return _lookupStringU[c]; } public static char ToLowerFastIf(char c) { // Use if-statement. if (c >= 'A' && c <= 'Z') { return (char)(c + 32); } else { return c; } } public static char ToUpperFastIf(char c) { // Use if-statement. if (c >= 'a' && c <= 'z') { return (char)(c - 32); } else { return c; } } public static void Main() { // Init the strings. char[] lData = new char[128]; char[] uData = new char[128]; for (int i = 0; i < 128; i++) { char value = (char)i; if (!char.IsLetter(value)) { lData[i] = '-'; uData[i] = '-'; } else { lData[i] = ToLowerFastIf(value); uData[i] = ToUpperFastIf(value); } } _lookupStringL = new string(lData); _lookupStringU = new string(uData); // Test the char transformation methods. string phrase = "Is it a BIRD?"; char[] array = phrase.ToCharArray(); for (int i = 0; i < array.Length; i++) { array[i] = ToLowerFast(array[i]); } string result = new string(array); System.Console.WriteLine("IN: " + phrase); System.Console.WriteLine("OUT: " + result); } }
Notes. The strings in the class contains the uppercase or lowercase versions of the characters corresponding to each index. You can use look up "a" and receive an "A".

And: When you lookup a value that cannot be uppercased, it is returned unchanged.

Tip: You can find more information on the char data type to explain this optimization.

CharROT13
Optimized ways to lowercase characters: char.ToLower: 10704 ms (Framework) ToLowerIf: 1231 ms (If-statement) ToLowerFast: 563 ms (Lookup table)
A summary. Using char.ToLower is slower than the method that tests each character with an if-statement. The method that uses a lookup table is somewhat faster still.
In most deployed C# applications, these timings are insignificant. But this optimization is sometimes useful. For methods that act upon characters, it can provide a speedup.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf