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

tom*_*cat 1 c c++ linux ipc

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

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

Ian*_*emp 13

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

  • 如果您假设您的平均机械硬盘可以100MB/s读取数据,那么对于200GB,您需要大约33分钟来顺序读取所有数据.你不可能同时将所有这些加载到内存中(除非你有200GB + RAM) - 听起来你应该使用数据库. (2认同)

Jam*_*nze 5

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

  • 编译20G可执行文件需要很长时间吗?:) (5认同)
  • `mmap`对于处理大文件来说真是一个好主意:) (2认同)