Large static arrays are slowing down class load, need a better/faster lookup method

Posted by Visualize on Stack Overflow See other posts from Stack Overflow or by Visualize
Published on 2010-05-04T18:09:24Z Indexed on 2010/05/04 18:28 UTC
Read the original article Hit count: 209

Filed under:
|

I have a class with a couple static arrays:

an int[] with 17,720 elements
a string[] with 17,720 elements

I noticed when I first access this class it takes almost 2 seconds to initialize, which causes a pause in the GUI that's accessing it.

Specifically, it's a lookup for Unicode character names. The first array is an index into the second array.

static readonly int[] NAME_INDEX = {
0x0000, 0x0001, 0x0005, 0x002C, 0x003B, ...

static readonly string[] NAMES = {
"Exclamation Mark", "Digit Three", "Semicolon", "Question Mark", ...

The following code is how the arrays are used (given a character code). [Note: This code isn't a performance problem]

int nameIndex = Array.BinarySearch<int>(NAME_INDEX, code);
if (nameIndex > 0) { return NAMES[nameIndex]; }

I guess I'm looking at other options on how to structure the data so that 1) The class is quickly loaded, and 2) I can quickly get the "name" for a given character code.

Should I not be storing all these thousands of elements in static arrays?

© Stack Overflow or respective owner

Related posts about c#

Related posts about unicode