为什么FastCGI这么慢? 最近我比较了两个版本的C++应用程序,它们处理大型文件(几十个GBS):在LeTTPD服务器下生成一个规则的可执行文件和FASCGIG二进制文件。事实证明,fastcgi版本的速度慢了近5倍。该程序基本上通过文件描述符从光盘上的文件中读取许多行,fcgi版本也确实如此。那么,经济放缓从何而来

为什么FastCGI这么慢? 最近我比较了两个版本的C++应用程序,它们处理大型文件(几十个GBS):在LeTTPD服务器下生成一个规则的可执行文件和FASCGIG二进制文件。事实证明,fastcgi版本的速度慢了近5倍。该程序基本上通过文件描述符从光盘上的文件中读取许多行,fcgi版本也确实如此。那么,经济放缓从何而来,c++,io,fastcgi,lighttpd,C++,Io,Fastcgi,Lighttpd,谢谢你的评论!我的程序执行以下操作: 初始化: -使用fgets逐行读取fopen()打开的多个文件(一个文件包含数百万行) -在文件处理期间在RAM中构建一些数据结构 -在处理每个文件后,将小日志消息输出到磁盘上的文件 对话框: -其余时间通过stdin/stdout回答搜索查询 以及FCGI版本: FCGX_Init() 初始化(与原始版本一样) while(FCGX_Accept()){ 对话框(通过fcgi套接字而不是标准输入/标准输出) } 我所说的只是初始化部分的性能。 我希望现在有

谢谢你的评论!我的程序执行以下操作:

初始化: -使用fgets逐行读取fopen()打开的多个文件(一个文件包含数百万行) -在文件处理期间在RAM中构建一些数据结构 -在处理每个文件后,将小日志消息输出到磁盘上的文件

对话框: -其余时间通过stdin/stdout回答搜索查询

以及FCGI版本: FCGX_Init()

初始化(与原始版本一样)

while(FCGX_Accept()){ 对话框(通过fcgi套接字而不是标准输入/标准输出) }

我所说的只是初始化部分的性能。
我希望现在有足够的信息。

我认为你提供的信息不够。它如何与FastCGI交互?它作为“常规可执行文件”有什么作用?很明显,除了移动到FastCGI之外,有些东西是不同的,或者在stdin/out上发生了一些事情,但是你没有说什么。探查器告诉了你什么?你没有提供足够的信息来进行正确的猜测。你的程序在读取这些文件时调用的代码一定有某种不同,你需要识别它。我开始认为fastcgi重新定义了fgets函数或类似的东西。试图调查,然后呢?你发现问题了吗?我也遇到了类似的问题。我正在从磁盘访问/解析PDF文件(60kb)。当程序通过FastCGI调用时,速度非常慢,CPU的速度也非常快。PDF解析是由一个共享库完成的,所以(不)包括fastcgi_stdio.h或使用NO_FCGI__定义没有任何区别。我认为您没有提供足够的信息。它如何与FastCGI交互?它作为“常规可执行文件”有什么作用?很明显,除了移动到FastCGI之外,有些东西是不同的,或者在stdin/out上发生了一些事情,但是你没有说什么。探查器告诉了你什么?你没有提供足够的信息来进行正确的猜测。你的程序在读取这些文件时调用的代码一定有某种不同,你需要识别它。我开始认为fastcgi重新定义了fgets函数或类似的东西。试图调查,然后呢?你发现问题了吗?我也遇到了类似的问题。我正在从磁盘访问/解析PDF文件(60kb)。当程序通过FastCGI调用时,速度非常慢,CPU的速度也非常快。PDF解析是由一个共享库完成的,因此(不)包括fastcgi_stdio.h或使用NO_FCGI_定义没有区别。