Skip to content

Instantly share code, notes, and snippets.

@5argon
Last active February 8, 2017 07:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 5argon/16b9772be8b9281eeb331fb5d3a1db1d to your computer and use it in GitHub Desktop.
Save 5argon/16b9772be8b9281eeb331fb5d3a1db1d to your computer and use it in GitHub Desktop.
Make int.ToString() faster to a certain number by changing it to int.ToStringLookup(). Avoiding dynamic memory allocation on the stack but uses more memory on the heap. Use the python program to generate a new lookup array.
public static class IntToStringLookup {
/*
A Python program for you!
import sys
import math
k = 0
memory = 0
for i in range(0,int(sys.argv[1])):
print "\""+str(i)+"\",",
memory += 20+(math.floor(len(str(i))/2)*4)
k += 1
if k==10:
print ""
k = 0
print "Memory usage : " + str(memory/1024) + " MB"
*/
static string[] lookup =
{
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
"20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
"30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
"40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
"50", "51", "52", "53", "54", "55", "56", "57", "58", "59",
"60", "61", "62", "63", "64", "65", "66", "67", "68", "69",
"70", "71", "72", "73", "74", "75", "76", "77", "78", "79",
"80", "81", "82", "83", "84", "85", "86", "87", "88", "89",
"90", "91", "92", "93", "94", "95", "96", "97", "98", "99",
"100", "101", "102", "103", "104", "105", "106", "107", "108", "109",
"110", "111", "112", "113", "114", "115", "116", "117", "118", "119",
"120", "121", "122", "123", "124", "125", "126", "127", "128", "129",
"130", "131", "132", "133", "134", "135", "136", "137", "138", "139",
"140", "141", "142", "143", "144", "145", "146", "147", "148", "149",
"150", "151", "152", "153", "154", "155", "156", "157", "158", "159",
"160", "161", "162", "163", "164", "165", "166", "167", "168", "169",
"170", "171", "172", "173", "174", "175", "176", "177", "178", "179",
"180", "181", "182", "183", "184", "185", "186", "187", "188", "189",
"190", "191", "192", "193", "194", "195", "196", "197", "198", "199"
};
const int max = 199;
public static string ToStringLookup(this int number)
{
if (number >= 0 && number <= max)
{
return lookup[number];
}
return number.ToString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment