如何加快我的程序的启动速度

时间:2011-07-25 13:21:42

标签: c++ c linux ipc

我的程序需要加载许多大的wordlist文件,因此启动总是需要很长时间。 在崩溃中快速恢复是如此低效。我有一个原创的想法,但我不确定它是否可行。是否可以将文件加载到共享内存中,并在启动时只附加到它?

你能给我一些想法或建议吗?有没有有价值的实例?

4 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:5)

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

答案 2 :(得分:4)

根据您的程序的访问模式,您可能最好根据需要随意访问wordlist,而不是在每次启动时将整个内容加载到内存中。

SQLite非常适合此类目的。您必须完成将单词列表导入数据库文件的过程,然后您才能开展业务。

答案 3 :(得分:1)

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

减少启动时间的关键原则是仅加载启动时所需的项目。如有必要,可根据需要加载其他物品。