如何加快程序的启动速度

how to speed up my program's startup

本文关键字:启动 速度 程序 何加快      更新时间:2023-10-16

我的程序需要加载很多大的wordlist文件,所以它总是需要很长时间才能启动。在崩溃中迅速恢复是非常低效的。我有一个初步的想法,但我不确定是否可行。是否有可能将文件加载到共享内存中,并在启动时附加到它?

你能给我一些想法或建议吗?有什么有价值的例子吗?

如果你加载了200GB的数据,你要么做错了什么,要么你的应用程序不需要快速启动。

这绝对是可能的,只要你设计一个支持的格式静态初始化,或者只是原始数据。有两个可能性:如果你能设计一个原始的数据格式(除了PODS,没有指针);如果可移植性不是一个问题,包括跨不同版本的编译器(您提供该文件作为您的可执行包),那么你通常可以只mmap文件。否则(我通常是这样做的),你可以写一个小程序将您的数据转换为c++定义(同样,只是pod)初始化项(静态),编译它,并链接它,作为DLL或静态。

根据程序的访问模式,最好是在需要时分段访问wordlist,而不是每次启动时都将整个wordlist加载到内存中。

SQLite非常适合这种用途。您必须完成将单词列表导入数据库文件的过程,然后您就可以开始工作了。

我建议您将单词列表拆分为许多动态/共享库。例如,一个库将包含常用词。这个小的你会在启动时加载。按需加载的其他库。这将减少启动时间。

减少启动时间的一个关键原则是只加载启动时需要的项目。其他项可以根据需要加载。