是否值得编译一个C程序并运行它而不是PHP页面?

是否值得编译一个C程序并运行它而不是PHP页面?,php,c,Php,C,似乎大多数时候,获得的速度都不值得——是吗?否则,许多人会为他们最受欢迎的页面这样做。使用C程序真的有好处吗。我可以想到一个不重要的例子:当服务器上的网络瓶颈比CPU瓶颈大得多时,程序运行的速度就变得不那么重要了。大多数网站使用内存缓存来实现高速响应。 在这种情况下,页面的创建不再需要加载,因此我不会选择c程序。我会说,即使在您演示的情况下,重新设计服务器端工作以作为c程序运行也不值得。不管流量大小 升级服务器或实现有效缓存的成本始终低于编写重写服务器端代码以在C中运行所需的工作量。C是一种优秀

似乎大多数时候,获得的速度都不值得——是吗?否则,许多人会为他们最受欢迎的页面这样做。使用C程序真的有好处吗。我可以想到一个不重要的例子:当服务器上的网络瓶颈比CPU瓶颈大得多时,程序运行的速度就变得不那么重要了。

大多数网站使用内存缓存来实现高速响应。
在这种情况下,页面的创建不再需要加载,因此我不会选择c程序。

我会说,即使在您演示的情况下,重新设计服务器端工作以作为c程序运行也不值得。不管流量大小


升级服务器或实现有效缓存的成本始终低于编写重写服务器端代码以在C中运行所需的工作量。

C是一种优秀的语言。但它是为系统级编程而设计的,而不是制作网页。另一方面,PHP是为制作网页而设计的。为正确的工作使用正确的工具。在本例中是PHP


而且你从一个错误的前提开始。也就是说,PHP的速度不足以交付页面内容。有很多网站根本不同意这种说法。也许在某些情况下,C语言是这份工作的唯一选择,但我发现你不太可能遇到这种情况。

这取决于代码。例如,我宁愿编译处理我的网络图算法的C代码;然而,我从来不会转换一个显示最少CSS的简单静态页面

当你用C作为锤子时,一切看起来都像拇指


如上所述,使用正确的工具。很多人都可以用C语言完成。但是PHP与C在web上的开发速度也是您可以研究的。在PHP中非常简单的事情(例如动态数组)在C中并不简单。

如果你甚至需要问这个问题,答案是否定的

基于Web的应用程序受网络、数据库、i/o和CPU的限制,按顺序排列,用C编写代码所带来的速度增长肯定会被抵消,但由于语言的性质,开发时间的增加仍然会受到其他因素的更显著影响

如果您的代码需要运行得非常快,需要做一些计算上相当困难或涉及的事情,也许C是正确的答案,但大多数网站不是这样的

一旦确定当前的实现速度太慢,将非常特定的处理或繁重的代码重写为C模块可能是值得的,但这些优化最好是在了解应用程序中真正的瓶颈的情况下进行的

如果您有一个像样的库或平台,例如.NETMVC,那么将C#用于通用web开发是一个可行的想法。C、 没有那么多。

有一种情况(在我能想到的所有其他情况下,答案是它不值得——其他答案中有很好的理由)

那么情况是什么时候

  • 该程序需要进行大量的数据处理或计算
  • 有大量优化的C代码可用
我想说一个复杂的光线跟踪系统是这种情况下的一个候选系统,但在这种复杂的情况下,什么都不是


即使在这种情况下,我也会用PHP实现页面,并运行后台作业来完成繁重的工作。

即使在内存中进行缓存,C程序的运行速度至少要快几倍?当涉及内存缓存时,一次运行实际创建页面的代码就可以创建1000个页面视图,因此页面的创建速度不再是静态页面的瓶颈,不是吗?如果是动态的呢?使用动态页面,通常可以缓存重复的数据库查询(如操作系统上的问题计数)。对于向少数人显示的独特数据(如此评论),瓶颈通常是数据库访问,而不是php部分。所以C还是帮不了什么忙。真正的bottoleneck在数据库中,而不是代码本身。与汇编等低级语言不同,C是一种通用语言。这就是为什么Apache是用C编写的,以及其他许多Web应用程序。“为正确的工作使用正确的工具”可能是:如果你对C感到满意,并且速度很重要,那么就使用它。我不会使用C,因为字符串等的处理非常容易出错和乏味,但这是可能的。@Tony,你说语言的速度是一个限制因素,这是一个很大的假设。我猜网络带宽、数据库和通用IO比语言更具限制性。另外,您与Apache的比较也是一个错误的类比。Apache是一个web服务器,我们谈论的是web应用程序。@JaredPar:Apache除了作为服务器之外,还是一个web应用程序。这就是为什么可以用C来写它,但现在我们正在分心。网络带宽和您提到的其他因素可能更加有限,但是使用编译语言而不是PHP可能会显示出明显的改进。正如健林所提到的,CPU资源可能比网络资源更有限。在任何情况下,我认为C都值得一试。顺便说一下,对于运行JSP的人来说,JSP是先编译的,并且将相当接近C的速度。不要说永远,yahoo shopping的核心代码都是用C编写的,以提高速度。这一切都归结为开发与服务器的相对成本,在某个特定的(难以置信的高)点上,几个月的开发时间比额外的服务器或一个全新的体系结构要便宜