最近我比较了处理大文件(数十GB)的两个版本的C ++应用程序:在lighttpd服务器下生成的常规可执行文件和fastcgi二进制文件。原来,fastcgi版本慢了近5倍。该程序基本上通过FILE描述符从光盘上的文件中读取大量行,fcgi版本确实相同。那么减速来自何处呢?
感谢您的评论!我的程序执行以下操作:
初始化: - 使用fgets(一个包含数百万行的文件)逐行读取由fopen()打开的几个文件 - 在文件处理期间在RAM中构建一些数据结构 - 在处理完每个文件后,将小日志消息输出到磁盘上的文件
对话框: - 其余时间通过stdin / stdout
回答搜索查询和FCGI版本: FCGX_Init()
初始化(就像在原始版本中一样)
while(FCGX_Accept()){ 对话框(通过fcgi socket而不是stdin / stdout) }
我只谈论初始化部分性能。 我希望现在有足够的信息。