早上好,
在我正在编写的应用程序启动时,我需要从文件中读取大约1,600,000个条目Dictionary<Tuple<String, String>, Int32>.使用BinaryReader构建整个结构大约需要4-5秒(使用FileReader需要大约相同的时间).我分析了代码,发现在这个过程中执行最多功能的函数是BinaryReader.ReadString().虽然这个过程只需要运行一次并在启动时运行,但我希望尽可能快地完成.有什么方法可以避免BinaryReader.ReadString()并使这个过程更快?
非常感谢你.
你确定在继续之前绝对必须这样做吗?
我会检查将任务分配给一个单独的线程的可能性,该线程在完成时设置一个标志.然后你的启动代码简单地启动该线程并继续它的快乐方式,只有当两者都暂停时:
通常情况下,速度的幻觉是足够好的,因为任何编写了闪屏的人都会告诉你.
如果你控制数据,另一种可能性就是将它存储在一个更加二进制的形式中,这样你就可以用一次命中将它全部放入(即,没有解释数据,只需读取整个数据).当然,这使得从应用程序外部编辑数据变得更加困难,但您没有将其作为一项要求.
如果是要求或您不控制数据,我仍然会查看上面的第一个建议.