我构建数据库驱动的网站。以前我曾将 Perl 或 PHP 与 MySQL 一起使用。

现在我正在开始一个新的大项目,我想以一种能够实现 响应速度最快的网站.

我在这里看到了几个页面,其中有关如何优化 PHP 的问题受到各种版本的批评,“不值得花很大力气来优化 PHP,因为它是一种解释性语言,不会产生太大的影响”。

我还听到了关于以下好处的各种讨论(特别是在 SO 播客上) 编译对比解释性语言, ,似乎使用编译语言而不是解释语言来提供网站更符合我的利益。

这在网络环境中是否可能? 如果是这样,合理的语言选择是什么?

除了速度之外,我预见到的一个好处是 在编译时发现错误 而不必调试网站。这是合理的预期吗?

有帮助吗?

解决方案

你能做的是什么多个交通繁忙的网站做的(如Facebook或Twitter),又名写你的“CPU占用” algorythm在C-插件。

例如,可以编写一个 PHP扩展如果打算使用PHP,或 Ruby扩展如果打算使用的Ruby / Ruby on Rails的等

这样的话,你可以保持您的流线型代码简单,易于维护(可能是方法很难从C处理请求,而不是从PHP),同时具有强大而坚实的背景核心(因为它的编译,编译器告诉你什么问题都在编译时)

其他提示

如果你要建立一个新的语言...你想出了所有的语义,它是完整的,和你有一些神奇的盒子,有做语言编译与解释之间的切换,编译版本会比解释版本更快。

为什么呢?因为编译带给您的语义下到机器上的一个较低的水平,这意味着它可以运行得更快,而解释表示语言的语义将通过一些翻译的事情的(即翻译),当用户实际使用您的网站。

说了这么多......这并不一定意味着你的网站将运行100%的编译语言快VS一种解释型语言。有翻译在那里,非常快时下各种语言(即PHP),并有用于解释语言,甚至优化,使他们更快甚至还在。

有许多其他的东西,进入你的网站是不可知您选择的语言的性能。硬件设置,数据库设置,网络拓扑结构等,这些东西可以对你产生更大的影响。我建议测量是肯定的。

对于我来说,找到在编译时错误是巨大节省时间,所以我倾向于更喜欢哪是强类型的编译语言。它可以让我把我的工作效率,但是这并不能使它客观上是最好的选择。有些人有没有问题写弱类型的代码,并在其上运行的测试套件来验证其功能,这相信还是会很好的工作。

恕我直言,这是一个相当无感用汇编语言编写一个复杂的Web应用程序,因为它提供了对一些管理问题不好处。

有很多办法站起来表演和可扩展性的脚本语言,无论是在语言层面和制度层面,是次演出获得最终可用的编译语言完全的影响力。

在另一边,我觉得是可以跟踪的敏捷开发和bug狩猎模式,简单地改变你的代码,看到的结果是非常有用的。

Perl是不是一种解释语言:它被编译成字节码,所以您只需在Perl可执行文件开始解释的价格。因此,与Apache使用时,不要使用CGI,但mod_perl的。

不管你做什么,开发时间很可能将,如果你选择一种语言,不适合于Web编程或不具有良好的库来支持你需要做的广泛超过响应时间。例如。我从来没有挑C或C ++。你不想要的Web App是极快,但越野车和6月中下旬。

雄猫 是使用编译语言部署网页的常见方法,但在走得太远之前,请认真考虑一下 你的速度瓶颈是什么. 。Web 应用程序速度减慢有几个主要来源:

  1. 网络延迟
  2. 静态媒体,尤其是图像
  3. 数据库查询
  4. 服务器端处理代码
  5. 客户端处理代码

1和5与这个问题没有太大关系。

如果您有许多页面不同的图像,则 2 将是相关的。如果是这种情况,客户端浏览器将无法很好地进行缓存,并且每个页面加载都将花费一些时间。在这种情况下,您的服务器端语言很可能不会被注意到,因为静态媒体的开销将占主导地位。

对于很多应用来说,3 可能是比 4 更大的因数。如果您的数据很少,但进行了大量处理,那么 4 可能会占主导地位,但除此之外,即使您使用解释型语言,3 也会占主导地位。

人们可能会问“为什么要优化php?”,因为无论如何,2和3通常更重要。很多时候,一个好的 数据库缓存框架 将是更好(也更容易)的优化。

有很多部件即进入一个Web应用程序。由应用层所用的时间并不需要大。对于典型的应用,最大的猪将在Web服务器和数据库。用二进制CGI更换PHP是不会改变这一点。

此外,虽然PHP的解释部分可以是有点慢,即只对PHP脚本的执行所发生一小部分。这是作为语言的一部分,所有功能都在本机代码实现。例如,当你调用像preg_match的功能,它会调用出来本机代码库,让它做其工作。这意味着有更少的实际解释事情比你想象的。

有可能会出现一些情况下,使用不同的语言PHP可能是值得的,但这些都是特殊情况。在一般情况下,没有什么可以在这里获得。

网络的等待时间是迄今为止在此自变量的最大决定因素。事实上,网络延迟是这么多,它呈现的语言因素从性能问题,而不重要的因素。所以......去你所知道的。使用您最舒适,与和其他因素最有成效的,你走可以算出的语言。现在,这么说,它总是有趣的尝试新的东西,学习新的东西可以成为一种成见,所以如果该项目是一个个人的,可以让你有机会去尝试,很好,通过各种手段.....

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top