C# : Optimization
Top 37 C# Example Pages...

["wf. XdBST~~}T~~Y77FXBBB(.CXS}T~~}T~~","ASCII Strings."," A string has two bytes representing each character. If the strings are only ASCII, you can change them to be stored as single bytes. This reduces the memory usage by one byte per letter. We change string representations to be smaller.","Example."," The concept behind this benchmark is simple. It allocates an array of 10,000 strings. The memory this requires is measured. Then another method (Compress) changes each string into a byte array. And the memory of this array is measured. ","Byte Array ","byte-array","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","C# program that changes string representation","\n\nusing System;\nusing System.IO;\nusing System.Text;\n\nclass Program\n{\n static void Main()\n {\n long a = GC.GetTotalMemory(true);\n string[] array = Get();\n long b = GC.GetTotalMemory(true);\n\n array[0] = null;\n\n long c = GC.GetTotalMemory(true);\n byte[][] array2 = Compress(Get());\n long d = GC.GetTotalMemory(true);\n\n array2[0] = null;\n\n Console.WriteLine(a);\n Console.WriteLine(b);\n\n Console.WriteLine(c);\n Console.WriteLine(d);\n }\n\n static string[] ","Get","()\n {\n string[] output = new string[10000];\n for (int i = 0; i < 10000; i++)\n {\n output[i] = Path.GetRandomFileName();\n }\n return output;\n }\n\n static byte[][] ","Compress","(string[] array)\n {\n byte[][] output = new byte[array.Length][];\n for (int i = 0; i < array.Length; i++)\n {\n output[i] = ASCIIEncoding.ASCII.GetBytes(array[i]);\n }\n return output;\n }\n}\n\n","Output","\n\n39128\n479800\n39784\n320056","In this program,"," the string[] required about 480,000 bytes. The byte[][] (a jagged array of byte arrays) required 320,000 bytes. There was no data loss in these strings because the strings were ASCII-only. ","GC.Collect ","gc-collect","Jagged Arrays ","jagged-array","Convert String, Byte Array ","convert-string-byte-array","Converting back to strings."," You can convert the byte arrays back into strings by calling ASCIIEncoding.ASCII.GetString. Please note this will have a performance and memory cost to create new strings.","Discussion."," Is this useful? Probably not. However, if you have a program that stores a huge number of ASCII strings that are rarely needed, but must be stored in memory, this could be a useful optimization. ","However: ","There is an additional cost when you need to convert back into strings.","Summary."," We looked at an optimization that can compress ASCII strings to use only one byte per character instead of two bytes. In some cases, this alternate representation could save a significant amount of memory. ","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","3679700504","data-ad-format","link","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANsAAAA8CAMAAADYHD9IAAAAMFBMVEX////mtsjahKfcpLruzNn69/nekrD08vLz2+XWVI7YZpfp6enadqDX19f45ezZwcpK10aDAAADsElEQVR4Xs2b23KrMAxFI8l3bv//t2eGkiic0h2Bo7T7NaOOV5G9ECG392YugdaEEOac46niUh61BZReT6hPmabpRKVw/S8jJ6FQDJBBxn1pYxYKOR8WpJSYh2G4nftUntlomrINLEurP4anabhYLIeV4B+PPt0tUXRROKRlgA0W+7OVfWPYmjJKhRHEFpMW+LLR2kMiQmv9Mk2GTZ0ee0SWMKybay4lECXmV2yRn4q3I2StZX432/ggEnNT0kYmx7uzFHRi8r34oDYWCkN+F1vWTiTdKTgZNx4Oaeuh9LNtQGkFylYLyB0tn0crG5rW+rHJ0zJHmwUivmo4CaB1s4Eisq05wAMVZ94UMdxc2XSd41pkXjR1XDbZRHNzYUPrtFkgwdbFaV/be/gE27ijMVlAa66eJIuWOrLlfRdiC2Cb2AUwaqknmxpgjVrAiS2p2tzZZC8qtYAT2zZrZCc2UGK0QL2437Qvbv5saoBT6kobWz7NVpzZgKmMFkiX/UYqbm+2vQHMFiBV/N9lm3eLNFugXJoC1J+ubMcGsFugrVa8YO/0Oba0M4DdAvSYTIe/yhbh8QLY4ljXME1DPs1GU/ZiAwYwW2CuW5pY8bSZF0c2cCaazRyqhkXWx0GGVGc2ZAD7LDCvxTvASQF/iw0ZYG8BmPj9+WlLuEH92YABbBZQOq7fkhaA584GDGC0gCbT9+f6DOi82YABLj0OmYMk2wNzfzZgAGwBDKgNqo3+cTZggL75LAbBV86fDRjAagF8eILpzpsNGABYwJrMFVSzMxswALCAOZFBS29HszcbHxgAWMCeGew4/zlADSAidBBWq1+IaPXvsIUKgy2AE37ecPQRNoFc1yxgPaW82RqAApLqWodOjK5sc30d7mX7/PNJZABsgX62uPkhOrFBA2AL9K9jVMF5sUWgC2B2W2bQ0JsfBic2MAPgWaDfAfp3ndhsd8MdFkDzX9YvqbzYGlh57yyA93JSwzmwAbuCxrKnQPEHvXAObNgA/RZIcC/HpjvOgQ0ZQMMXLUAV64Xqxu7Bhszcb4Hw8j6bFc6BTQ0AUtAa8SujuCdm8IphL5vFAPgsjZxIJIQh7wGCNMudaKh3umWIO+pCxK3n3VCwaqMFSn2EmdPXfJt4xbK0hM6OjZPQV/WjvIcNdJvRAqGCWDZpaU7vK1sMgO85CZE1y9kayYcNGMBogUIp1eOwGL9qzDQe1TeWpeN95bf+WEWYuW2rYlmKghnwAjHfkTgJhdD7u5V/XDaGjC0/qyQAAAAASUVORK5CYII=)","url(data:image/jpeg;base64,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAA3CAMAAABHJUQ7AAAAMFBMVEX////7/f7y/f+38v//6en/1dX/tbX/xcXl+v/U9//G9f//qKiq8P+U7P+e7v//lJQSDb6dAAAEaklEQVR4Xt2Z27KiMBBF050bN/X//3aQiBvZoeMZHoYz+8myKYtFeuWCDomfcY30n3EXTXh8xtnp7p+5KlbcYYXGYE1rCpZeFCvtsBpdOPiSFe6qXfjYJTWwlgBt+AVqteXSfgnQ/MXVSl/Jpd2Svu/6oUQvrVZ24zdy6RrXlUHrr4mFMcosV2Pc+jnXxArAioZcRj/qldUaPwjtSEzPi0RnMFWpFrcJIea0qpvyZ1GEfn77laieU8tZcm2IQ17ZRVXFKurzi1VZZAzLWEu56G13XN0VPO3ktNvZ628lvUP6W4mHWkBhuRgrJDA4ETGLQusHCERFSgvDafwknvaMNXRbrAEIhDqwWo7lYiw8+tAsLsyMheF8Um3Jq90hM5ZXh3QvhLtDbq90rJYpV+3G7KKNlYo2i5nCToO0YA0OkZVBifRWUYvkOoFFHVoFL/bBbzgNtQrWpIZctlok11ksfWGllOKcMCfDrtdw7SBKALpiddX5gUFZLVMuaqK43LlRLB22T6xgQS5Wa8XqDbkMtYjSwsrhxaNyUFzXNEcZ0fUL+o6C1HK6YEGuDYU21aKeJCwwoaAq9aKUHQgNF83m1HN0UcHy1so12GoBMx1hZdnte7mI/WLXMRY8qn9JU9dCBayaXJOhli1XvTu103pxhlqwXBurIpeQWndgcdMJmpLVYs42lhxhPY8sNSzMhcn4eVILWDRF0BRCallyHeCWNuPi8AywQsRed4dFcrFaHlgkV0stksvAkjaW908sLVv68cFJhnGkFrBYLlstastjLEFBD7A8sIzdU02uulo7LIVchlqP9M5IpIyl2j3dKfaohSVExVgsV9gYr1Usd3/LBbUmqHWcaGAtFs/xQ3+ANc1Y5XXA2MJiufLGeJ2pgFWRC2oNEOY4+RjrSdXCWmtxA7LsC2HRoVxQq2BNwCK5DLU4LBe1+3T/Civtl2rCIrnkozOKWpjlSK6KWlZCC+tuN2FRawQFY9XlglqMxXKxWtnEiuexeAlhLJZrq5bTwQOrJtdeLdg8pm1ILsIqE6EvC66FxSXG4pVlhKkL1gQslmt6q9XZG6XMcrE+iJzDYrneH2TFmqlWLJbr/UH2agk9NiI4jZVbWLDw47F2dSzMf/5IrfHgsUULCzFmQlmVQS0kPiOw6VCr9wXr7hBsBBFWKxvn13NYur3ZGGJODyRL+0/RdXJ63raQXIipFst1HiuaSwjLhQh2TrhxlqupFst1AgsLl43FcsE9wiK5EG+oRXKdwPpiuIIhF3ZOwLLk6ltqASH/Pdb9NVzmoh8suXAoYSyWC8X0CtuSUwmwrKudVIoz07C+ognb7hpzCKmOJTgY4bzfa+dvVSzxc96d6P5BQiyPKYZCEmLkR8TLmqis/8L7OeoQ3slfO5m8NjNArSuHNbVzx6HkwuG38XYUr9IuHajF+cVqpZ+p5f9PtW7/pVrdL1EL5/2vgvP+tTP+TK3pd6gVfqaWXlwtfk1jhl/TXDsxlcQvsXxJ75A/ZMHNEnLfXgIAAAAASUVORK5CYII=)"]

["url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAACCAgMAAADasxWRAAAADFBMVEX/6Nn///+VlZX29va5ksB5AAAASElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOSAALWyrsxEHLDAAAAAElFTkSuQmCC)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAA9CAMAAAAzrLMQAAAAMFBMVEX////i4uK+vr7Z2dn7+/vDw8PMzMzz8/Pm5ubHx8fr6+vR0dH39/fV1dXe3t7v7+8OWlUtAAABXklEQVR4Xu3YzW7EIAwEYGz+SXb7/m9bteoBVnTq045VMddYn5xEEJzwEpGn/kREgilcQ4q+pEgCMt9IUbeJN+DJRtNfI3udbqRLQQp4UDzj7gqTawBhGLgWd80zUtc/08HbpRgPNaSEfUjGWOUu45toYlr/JKMvpWNilvKcwjYUo83qY3VqNjwmhnGttWvqBPWwD8FImJSJqmEbgjEm8QNbLezzdmO+hWuHFcPaf7sRMThfj2EfiiFf6aoJ7PioabKBX8sTlLkyqmGTdWdEw3blzWiWD4Mzo1kmJkeG/bDDNfD5dgCVZ+AZMwLVjVG7beigGniMKAm4Xgyx1hKMf9zzBVg3xlDbevVk3Nk49vMN/98UlA/b/zdfRjT9fXNm5On+QK0ro1pO296MZthj3BliWLBcA6+hBEyegYszIJ0Z0TJA8o3TNN/wn5OTs3tQjdP0afo0fZo+TZ+mT9Of4mQgBSW24WQAAAAASUVORK5CYII=)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANMAAAA8CAMAAADLy3+8AAAAMFBMVEX///9/frjX1+inp81WUaW6udfGx97q6fIbDJDr+PfE7Onc9PLN7+zT8e/0+vu56eUR9HoqAAAEp0lEQVR4XryXzQ7DIAyDfc0fe/+3XTeph4YGI5D4jiSo2HMQA+TzRNDhzw7FD30uOjr6JsMf+czj4PATI1GozqsNYDsVpzS1fGQiOuplslOOaUIkN4nmVrhN3XKc04ScraFkq0JrzKx2UpMla0Zma10hXhlOaoIOJipSjZRqq3BWkwy8SSUyL7VTdlgTvHTcipngRUnJXNMkWCU7TmaiqMbAJ1nTZFgnjwabCV5uyaUlTYoNWuG4FmbTmYGNYlnBHiccPhpSu8YadCVCvpU84njwn2ncIao5lBwjydu8z1u/Fnyb48b1B/GbvsJ28V5A8E/AX3uaX6gq8Zv8M9lG+jts5hPy2iRxcYuS1SfaPpEl2FS4463LLv6i5g8n28PE45yyIFPbvqyX65brIAiFQckFCfb93/aUkIacrprRzuwfNWp15RPc0cLWMiGtK2EuO1QdzLzyVFdwx4PP3JkJekEqCpBoPfSw7JOBLCmuzlHjfl6014P+Y6rLiUSWfL2ZV1ybS+GvxN+duySYNmU0minNGbNuW2HoUd0OIlUxVfgzbS0muNWVSSxCFaAyi3YvuOh2EjHzONJ4oLjLhYNpAYMypgpgDQBR+uO04Eq5Qs30LNX4ffC0ZLr0vPCWbAmAE8QUqSLtM+49r4fcMuZBXy0XJtpzz5lUoMWUyep0GAqKqAXp7IgecFkt6jGFVabrsqWGMY9ezPjCNPkrYWIRhQbTKTrKSUy8fuhxBlwJ0erzyUTnjOTtyRrv/Dyk3RuxlE0EVxeK8A0TJdyLeTYu5JOJJmuJHmeYk/1E3bnRa9navciNNBo/S/LJpMIzORQJ3DAtsBypkqw0JuZrS3pf+JSz1YMJz83m7WjTdtmEDDimMQnX2WOV75jeepiFnenzGHMM13VZXE6TwKPVE6guY63XQJmVGxWNMJlqk6k6UTDF08slskV16rPzrf9sE0zgrzfE1IhT7JgELSZzCbL/1M7PLncHyo4CSbjWM8XDYNOvmMjft8mU3QfxLkzjx345woQrTinlsCwMD/vAVJ9yJpEGU7jK3GRa1l3z7W4av3EeTJH4tJy57rplkqeaTL4wuDaZYO+j++PouE3IzvQIpAQu8mr+yPTKODG1PSL5HNRi8hDmlnsNfnVDvp/m7GsaDnQc3KYPTM6yl6rK0GSChGYSYQPvTHVtOIQ+GuKB5FMx9YxgET319aUpcg+H7k+llynuQB1WqbqFylbhay2GRPUng9DhQL3cfFcHk4FcxPC1cpx278Kkb3urh8mhXAo/SQInBgwrrBX/NWsGKRCEMBAElmWJ0fj/3y7McZQapCeQ/KCwCZjqR69r99vYgRcGppzb1+/6si2znvPidJ8fCb4A4Xo+n2886xpfLEN/l6mBj0u6r2zSYQKTrjB0r+EbzCYzcXlGH85CbDinC0ypCoOzwJ2ikJjyk4cGPUjz6kzn2lb3NB19vM50QxoG85amMeoU6UxjJpc+YMFBK0xh8pnCxPk2WLo6U8wUJt6sjYIyZKaWw8RhMBb8KtNMY8J40UP1uky0BhjZKjNBV5eYW1Um7i1xNr0yE3TfUR5GdaatP+OH6rWZ/usREj10r/sZAAAAAElFTkSuQmCC)"]