c ++ cgi中的web开发真的会带来巨大的性能提升吗?

时间:2011-07-22 17:03:52

标签: c++ wt

我在看完这篇文章后就问了这个问题 http://stevehanov.ca/blog/index.php?id=95

使用cgi代替fastcgi也不是一种惩罚吗?

更新:为什么有些人会假装回答“你的性能提升20-30%”?是纯粹的猜测还是这个数字来自可靠的基准?我看过HipHop的表现更多的是10倍。

5 个答案:

答案 0 :(得分:9)

我曾与人谈过从PHP迁移到Wt(C ++ Web框架)的人报告了重大改进。从我使用Wt创建的小应用程序中学习它,我发现它比我创建的相同PHP类型的应用程序运行得更快。拿出你想要的信息,但我卖了。

答案 1 :(得分:5)

这让我想起20到30年前人们如何使用Assembly vs C,然后是10 - 20年前的C vs C ++。当然,C ++将比​​PHP / Rails更快,但构建可维护和可伸缩的应用程序需要花费5倍的精力。

重点是,在牺牲开发资源的同时,性能提升20-30%。您希望应用程序的工作速度提高30%还是实现了1/2的功能?

答案 2 :(得分:3)

大多数Web应用程序都是网络绑定的,而不是受处理器绑定的。用C ++而不是高级语言编写应用程序没有多大意义,除非你做的计算量很大。另外,编写正确的C ++程序很困难。编写应用程序需要更长的时间,并且由于误用指针,内存错误,未定义的行为等,程序更有可能以惊人的方式失败。总的来说,我认为它不值得。

答案 3 :(得分:3)

每当你消除一层解释或操作系统抽象时,你一定会获得一些性能提升。话虽这么说,语言或技术本身并不意味着你的所有问题都解决了。我修复了C ++代码,花了很多时间来处理一组相对简单的记录。问题在于实现,修复与语言的功能或限制无关。

假设所有内容都已正确实施,您肯定会获得更好的性能。问题在于找到错误。 C ++的一个问题是许多开发人员目前“受过训练”或习惯于拥有与对象后面的内存管理相关的大量细节。这样就不需要考虑这样的事情:“如果我将这个指针传递给多个线程会发生什么?”有时它运作良好,但并非总是如此。无论对象如何隐藏令人讨厌的细节,您仍然需要考虑一些语言的细微之处。

根据我的经验,你需要几位经验丰富的C ++开发人员监视代码,以防止错误和内存泄漏失控。

答案 4 :(得分:3)

我当然不会卖这个。如果您希望获得超过PHP的性能提升,为什么不使用Java(或更好的Scala)框架?这些对于Web开发来说要好得多,拥有不错的,相对容易使用的框架,并避免了很多C ++的麻烦。我一直看到网络开发(以及大多数现代非科学/高性能应用程序)的主要优点之一是能够避免C / C ++开发带来的麻烦。