C# 应用程序从DVD开始时速度太慢

C# 应用程序从DVD开始时速度太慢,c#,winforms,C#,Winforms,我有一个带有大型数据库(大约3.5 GB)的应用程序,我需要从DVD这样的只读文件系统运行它。所以我的程序在硬盘上运行得很好,但从DVD开始太慢了 我的问题是如何优化程序以在DVD上快速运行?这完全取决于您所指的数据库类型。我假设它是基于行的 如果希望快速读取数据库,第一步可能是对数据库进行排序。这非常关键,因为它可以使用二进制搜索非常快速地查找特定行 将3.5 Gb的内存加载到ram中以从DVD进行搜索所需的时间几乎与翻录DVD所需的时间一样长,这就是为什么您的程序启动缓慢的原因。考虑创建一个

我有一个带有大型数据库(大约3.5 GB)的应用程序,我需要从DVD这样的只读文件系统运行它。所以我的程序在硬盘上运行得很好,但从DVD开始太慢了


我的问题是如何优化程序以在DVD上快速运行?

这完全取决于您所指的数据库类型。我假设它是基于行的

如果希望快速读取数据库,第一步可能是对数据库进行排序。这非常关键,因为它可以使用二进制搜索非常快速地查找特定行

将3.5 Gb的内存加载到ram中以从DVD进行搜索所需的时间几乎与翻录DVD所需的时间一样长,这就是为什么您的程序启动缓慢的原因。考虑创建一个指向某些行的位置的索引,如字典中每个字母的开始的页码。然后,只需加载数据库的一小部分即可找到所需的行。然后,通过按照需求的顺序加载部分,在RAM中慢慢地建立字典(也就是说,如果您搜索某个内容,那么首先加载该部分)

特别是对于DVD,要使其加载速度更快,您无法做很多事情。考虑一个流压缩类型(GZIP,或许C支持这个)以允许您更快地拉数据。
同样,这完全取决于你在做什么,这些只是一般性的建议。

你必须分析你的应用程序,没有什么灵丹妙药可以让你的应用程序加载速度提高三倍。分析、分析、查看导致延迟的数据

加载过程中是否捕获并忽略异常?DVD(或其他光盘驱动器)与固定硬盘驱动器,甚至大多数USB驱动器相比,本质上是一种速度较慢的介质。此外,如果您运行的是只读数据库,那么您将无法做很多事情,因为它是第三方代码,负责处理您对该数据的文件访问。你确定你真的要从DVD上运行吗?例如,你能从硬盘上的只读文件夹运行吗?确切地说,我的应用程序是一个学习软件包,我需要从DVD上运行它。你必须评测你的应用程序,没有什么灵丹妙药可以让你的应用程序加载快三倍。分析、分析、查看导致延迟的数据。为什么3.5GB的“学习包”很大?您是否在数据库中存储二进制数据(图像、音频、视频)?根据所使用的系统,您的应用程序可能需要将数据库的大部分加载到RAM中,这只需花费时间,因为DVD是相当慢的介质。将应用程序安装到硬盘上是一种选择吗?数据库严重依赖于随机访问,这在DVD上非常慢(甚至比硬盘上更慢)。除非你能找到一种方法将你需要的数据打包成连续的数据块,否则这将永远是你的主要性能问题。确切地说,我把我的数据库分割成了一部分,当我需要一部分数据时,我会将它的数据库部分加载到ram中,那么瓶颈在哪里呢?什么需要很长时间?