C# 用于高可扩展性&;性能需求,是否最好使用C++;还是PHP应用程序后端的Java实现? 对于社交门户的高伸缩性和性能需求,在PHP应用程序的后端有C++或java实现是可取的吗?

C# 用于高可扩展性&;性能需求,是否最好使用C++;还是PHP应用程序后端的Java实现? 对于社交门户的高伸缩性和性能需求,在PHP应用程序的后端有C++或java实现是可取的吗?,c#,c++,c,jakarta-ee,C#,C++,C,Jakarta Ee,这两者的好处和利弊是什么?首先,PHP已经是后端了。PHP本身是用C或C++实现的。 对于可伸缩性,语言并不重要,因为可伸缩性是关于并行处理多个请求 性能如“尽快得到一个请求”,语言通常很重要,这就是为什么脸谱网将PHP写到C++编译器的原因。 < P>你没有写下一个脸谱网。现在就用PHP(或任何您最熟悉的语言)编写。如果你足够幸运,发展到php无法处理负载的地步,那么你可以重新设计你的站点。除非你运行的是全球100强网站之一,否则你只是在进行过早的优化。这取决于你对“高”的定义和许多其他因素。

这两者的好处和利弊是什么?

首先,PHP已经是后端了。PHP本身是用C或C++实现的。 对于可伸缩性,语言并不重要,因为可伸缩性是关于并行处理多个请求


性能如“尽快得到一个请求”,语言通常很重要,这就是为什么脸谱网将PHP写到C++编译器的原因。

< P>你没有写下一个脸谱网。现在就用PHP(或任何您最熟悉的语言)编写。如果你足够幸运,发展到php无法处理负载的地步,那么你可以重新设计你的站点。除非你运行的是全球100强网站之一,否则你只是在进行过早的优化。

这取决于你对“高”的定义和许多其他因素。通常情况下,性能应该刚好“足够”。根据我的经验,试图从一开始就编写尽可能快的实现可能会适得其反。对于语言选择IMO,它更多的依赖于人们编写代码和他们在问题领域的经验。

在原始性能方面,C++将使你比java或PHP更公平一些,而且比C语言稍远一些。我的意思是,如果你用不同的语言实现相同的算法,你很可能会从C++看到最好的性能。(尽管这完全取决于你在做什么和如何做——一门不同的语言本身并不是一颗灵丹妙药;你需要学习如何最好地使用这种语言,这可能需要几年时间)

正如@spender所说,使用经过深思熟虑的算法和体系结构通常会比简单地切换到另一种语言带来更大的性能提升和更大的可扩展性提升。性能从根本上讲是高效的(最小化带宽、内存、磁盘和CPU等资源的使用)可扩展性主要是使事物并行工作(最大限度地减少对数据、带宽、内存和CPU等资源的争夺,并最大限度地减少系统不同部分之间相互通信的需要)

正如@Kugel所说,如果你有一个真正可扩展的架构,那么在某种程度上,你可以在这个问题上投入更多的硬件,这可能是一种比用不同语言重写所有内容更便宜的方法。然而,如果你的站点成功,尽可能提高代码的效率将降低你的硬件和运行成本


另一个考虑可能是开发/维护性相关的问题——如果你是PHP专家和C++新手,你可能会挤出更多的PHP,而不是C++。你必须考虑整个图片,找出最“商业可行”的东西。解决方案,而不仅仅是理论上性能最高的方案。或者,您可能会发现您的“组合在一起,工作得出奇地好”PHP解决方案在一周内运行并运行,而你的高优化的C++却从未完全完成。

PHP是由java备份的。这将是一个非常奇怪的设置。脸谱网在PHP中完成了所有的事情。考虑架构可能比你考虑平台更好地服务你。为什么C在你的标签中?实际上是业务逻辑的主要原因。java java是java的客户端,它希望通过Hector的客户端与CasDANRA数据库进行交互……你认为C++会比整个PHP实现更能提升性能吗?脸谱网在PHP中没有做任何事情。PHP的速度慢得像糖蜜。脸谱网在其体系结构的各个层次中使用PHP、Java、Erlang、C++的混合体。它甚至把PHP转换成C++,以获得更好的性能。当你在社交网络中谈论数百万用户时,他们很快意识到LAMP栈不会切断它。我需要在从数据库中检索数据之后,在服务到客户端之前对数据进行一些处理。这就是为什么我认为实现它可能是好的。商业逻辑在C++或其他一些强大的语言中。或者你认为PHP可以在没有性能下降的情况下处理它吗?脸谱网已经将它的业务逻辑代码转换成C++ C++吗?我猜是通过HIPPHOP做的吗?这真的能提高性能吗?unle你做一些统计或财务计算,我想你不需要C++ Sulu。首先,数据库是一个有很多用户的问题。实际上,在这个阶段考虑java/C++的主要原因是我们需要用java或C++开发的客户端选项来与Cassandra database进行交互。PHP的客户端还不完全成熟,有局限性。在Java中实现完整的应用程序或仅在Java中实现后端应用程序。@Marcos:这是一个很好的例子,可以清楚地说明语言决策。此外,如果您正在等待数据库,则值得考虑的是,大部分执行时间实际上可能在数据库层,因此您选择的语言可能会OT对交付页面所需的时间有很大影响——如果数据库查询是瓶颈,java和C++可能会产生几乎相同的结果。