哪种编程语言适合Web关键应用程序开发?

时间:2010-01-05 10:46:48

标签: programming-languages

根据this page,似乎Perl,PHP,Python比C / C ++ / Java慢50倍。

因此,我认为Perl,PHP,Python无法处理关键应用程序(例如> 1亿用户,每秒x> 1万次请求)。但是存在异常,例如。 facebook(据说facebook完全用PHP编写),wikipeida。此外,我听说Google广泛使用Python。

那么为什么呢?C / C ++ / Java和Perl / PHP / Python之间的速度差距是否更快?

感谢。

9 个答案:

答案 0 :(得分:7)

在大多数重度使用的Web应用程序中,计算代码是我最不关心的问题。

典型的高可用性Web应用程序中的瓶颈是(按此顺序不是nessecarility,但最有可能):

  1. 数据库(IO和CPU)
  2. 文件IO
  3. 网络带宽
  4. Application Server上的内存
  5. 您的Java / C ++ / PHP / Python代码
  6. 使您的应用程序可扩展的主要问题是:

    1. 减少对数据库的访问(缓存,考虑到群集,智能查询)
    2. 分发您的应用程序(群集)
    3. 消除线程之间无用的同步锁(参见commons-pool 1.3)
    4. 创建正确的数据库索引,数据模型和复制以支持许多用户
    5. 使用增量更新(AJAX)缩小响应的大小
    6. 只有实施了上述所有功能后,才能优化代码

      如果我遗漏了某些内容,请随时添加更多内容

答案 1 :(得分:5)

您链接的页面只能说明事实的一半。当然,本机语言比动态语言更快,但这对于具有高计算要求的应用程序至关重要。对于大多数Web应用程序而言,这并不重要。网络请求通常会快速提供。拥有一个有效的框架,正确管理资源并启动新线程以快速处理请求更为重要。定时行为也不是唯一的关键方面。使用动态语言可以更好地实现可靠且无差错的应用程序。

不,更快的硬件不是解决方案。事实上,谷歌以使用廉价机器集群而闻名。

答案 2 :(得分:3)

  

(例如> 1亿用户,每秒x> 1万次请求)

要实现这种性能,您将需要设计和实现网站/应用程序作为可扩展的多层系统,并且可能跨越(可能)所有层。此时,一种编程语言比另一种编程语言更快/更慢的事实可能只会影响处理器场中所需的计算机数量。系统架构的设计更为重要。

答案 3 :(得分:2)

php中没有JIT编译器将代码编译成机器代码

另一个重要原因是PHP的动态类型。动态类型的语言总是会变慢..

点击下方阅读更多

What makes PHP slower than Java or C#?

答案 4 :(得分:1)

C很容易成为最快的语言。它如此之快,我们在其中编写其他语言。没人认真地用C写网站。为什么?它很容易以非常难以检测的方式搞砸C,它几乎没有任何帮助你。简而言之,它会占用程序员并产生错误。

构建一个强大,快速的应用程序不是选择最快的语言,而是关于A)可维护性和B)可伸缩性。

可维护性意味着它没有很多错误。这意味着您可以快速添加新功能并修改现有功能。您需要一种能够为您完成尽可能多的工作的语言,并且不会妨碍您。这就是Perl,Python,PHP和Ruby之类的东西如此受欢迎的原因。它们都是以程序员在原始性能或整洁方面的便利性编写的。 C是为原始性能而编写的。 Java是为概念整洁而编写的。

可扩展性意味着您可以从10个用户转到10,000个用户,而无需重写整个内容。这曾经意味着您编写了可以管理的最紧密的代码,但高度优化的代码通常很难维护代码。它通常意味着为了计算机而不是人和企业的利益而做事。这会牺牲可维护性,你必须告诉你的老板需要3个月才能添加新功能。

这些天的可扩展性主要通过向其投入硬件和并行化来实现。您可以将工作量划分到多少个进程,处理器和计算机?如果你能做到这一点,你可以根据需要启动另一台廉价的云计算机。当然,你会想要优化一些,但是在这个规模上你可以通过实现更好的算法而不是收紧你的代码来获得更多。

例如,我采用了一个缓慢的PHP应用程序,该应用程序一次难以处理50个用户,使用mod_php从Apache切换到lighttpd,使用负载平衡,远程FastCGI进程,允许最小化并行化代码更改一些基本的分析显示他们用于原型的PHP框架是狗慢,所以它被剥离了。分析还建议了一些索引,以使数据库查询运行得更快。最终结果是一个可以处理数千个用户的系统,可以根据需要添加更多容量,同时保持大部分实现业务逻辑的代码不受影响。花了几个星期,我真的不太了解PHP。

以非常快的语言重新实现小而尖锐的部分可能是有益的,但通常已经以优化的库或工具的形式为您完成。例如,您的Web服务器。对于业务逻辑的复杂性和不断变化的需求,重要的是易于维护以及程序员的优秀程度。

你会发现大部分的网页都是用PHP,Perl和Python编写的,因为它们很容易编写,用C,Java和像Scala这样的exotics(例如Twitter)写的小而尖锐的位。例如,Wikia是一个经过修改的Mediawiki,它是用PHP编写的,但是通过heroic amount of caching执行它是有效的(除其他原因外)。

答案 5 :(得分:0)

Google正在使用Python进行GAE,Windows Azure正在提供PHP。 LAMP架构非常适合应用程序的可扩展性。

我还认为编程语言在性能方面并不重要。最重要的是要查看应用程序的架构。

我希望它有所帮助

答案 6 :(得分:0)

要投放网页,您需要:

  1. 接收并解析请求。
  2. 决定您要对请求做什么。
  3. 读/写持久数据(数据库,缓存,文件系统)
  4. 输出HTML数据。
  5. 服务器端语言的“速度”仅适用于第二步和第四步。鉴于大多数脚本都努力使第2步尽可能短,并且大多数Web语言(包括PHP)尽可能地优化步骤4,在任何严肃的网站中,大部分请求处理时间将在步骤3中使用。

    第3步所花费的时间与您使用的服务器端语言无关......除非您实现自己的数据库和分布式缓存。

答案 7 :(得分:0)

对于php,你可以做很多事情来提高性能。例如

  • Php Accelerator
  • 缓存查询
  • 优化查询
  • 使用分析器查找较慢的部件并进行优化

这些事情肯定有助于缩小低级语言之间的差距。所以为了回答你的问题,你可以在代码中做其他事情来优化它并使其运行得更快

答案 8 :(得分:0)

我同意卢克。它的结构非常重要,而不是编程语言。