【发布时间】:2011-08-22 18:53:07
【问题描述】:
我的 dll 文件需要一些代码页转换映射。有些字符串需要逐字符转换。目前我创建了几个包含这些地图的巨大字典。这些字典太大了,我不得不将它们分成 8 个字典,否则 C# 不允许我编译。现在加载应用程序需要几秒钟的时间,而且它占用了太多内存。
我希望这样更有效率。也许我可以在我的 dll 中嵌入一个(或多个)表并用 sql 或 linq 或其他东西查询它。现在我知道 dll 不用于存储数据,但我的客户会喜欢单个 .dll 文件。该表只需要只读并保存约 62000 行。
附加信息:
我有 10 个代码页需要转换为 unicode 并返回。
其中 6 个代码页是单字节代码页,没什么大不了的。 (6 * 256 * 2 = 3072 项)
其中 4 个是双字节代码页,CP932、CP950、CP936 和 CP949,约 62000 * 2 = 124000 个项目
我可以省略任何字符集的前 128 个字符,但这没有多大意义。
如果我可以将其保存为可查询的内容,我只需保存 ~62000 + 1536 条记录并使用它们进行双向转换。
在当前字典中查找字符非常快。内存使用无关紧要,启动时间最困扰我。
查找速度必须很快,最坏的情况是我必须每秒转换大约 20 个句子。延迟是不可取的,它必须跟上。
有可能吗?实现这一目标的最佳方法是什么?
【问题讨论】:
-
有趣的问题:将大量数据嵌入到程序集中的最佳方法是什么?也许在编译时嵌入资源文件? msdn.microsoft.com/en-us/library/c0tyye07(v=VS.100).aspx