解决方案 »

  1.   

    你说的是CPU的L1/L2/L3吧,L3一般都在MB级别。
    string不是值类型,空间可能是随机不可控的,极端情况一个string占用一个内存块。
    Dictionary<string, double>数组空间包括 int+int+int+string+double,每个元素占用24/28B(除了字符串值本身)。
    那么就可以计算一下,1MB的L3最多包含大概3W个元素(包括未使用的)。
    由于字符串空间不可控,即使其他部分都能全部命中,字符串这部分还是会命中失败造成性能瓶颈。
    当然字符串也可以让它连续可控的,比如你可以把所有的字符串拼接成一个大字符串,定义一个subString的结构体,使用Dictionary<subString, double>。