重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
按主流的实现单进程应该是go java pypy,因为pypy有GIL,不能充分利用多核性能。但其实这个问题没有太大意义,因为这个跟HTTP server的实现密切相关,完整的框架有更多功能,空跑的性能也会低一些。Go的handler很高效,也很轻,额外的功能很少,所以很快;但如果你实现一个完全不解析HTTP协议、连接进来就直接发送HTTP 200 OK的“HTTP服务器”,那可能会更快,但拿来比显然不合适。Java的主流Web实现本身就是比较完整的东西了,有前端,协议解析,线程池,任务管理之类的,大约相当于Python的WSGI,如果是Servelet比WSGI的话,那应该还是Java要快不少。
创新互联建站自2013年起,是专业互联网技术服务公司,拥有项目网站制作、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元吉县做网站,已为上家服务,为吉县各地企业和个人服务,联系电话:13518219792
我感觉还是python+c比较好。
就我身边的人来看,得出如下观点:
c++:学一样可以解决任何问题,就是学习的成本太高,时间脑力不够学不好啊。。。
python+c:拿来一个项目,先用python做个试用版(不考虑执行效率、内存等),开发速度是其他语言开发时间的十倍,然后测试,发现执行中出现瓶颈的话,要不就多开几个进程,要不就用c语言写小的功能,再用python调用,几乎可以又快又好的解决任何问题。(要提高速度试试pypy)
go:一直有人强调go对多线程多cpu执行时的效率有多块多好,那是因为他和python比,python根本不支持多线程(因为GIL的存在),go各方面都很平庸(比效率比不过c,比库的支持比不过python(python也可以用c库啊)),只是和python瘸腿的一方面比当然强了。。。
c#、java之类:转别人的话说,用起来感觉像开着一辆装满石头的拖拉机。。。
总的感觉:天才去学c++,能解决任何问题,又赚大钱;我这种不聪明的人python+c就能解决几乎所有问题了。。。
我用python执行时间23秒,用pypy执行时间1.54秒,用numba加速为1.5秒,c语言在本机macos上执行时间1.3秒,java运行速度1.45秒(jre8),详细见图片,可见引入jit编译后,性能直逼c语言,而写python比写c容易太多,比java简洁,写代码速度也是非常非常重要。由于历史原因,很多python库用的c语言库,如pandas(pandas的矩阵计算用numpy优化过非常快,可能比手写c语言循环还要快),可以通过设计来分离c语言加速后的python代码和pure python,分别用不同的加速方法,如numba可以单独加速一个函数,把需要大量计算的放在一个函数用numba加速(numbapro支持显卡加速但是商业版的)。
所以只适当设计一下,python在一般计算问题下有这些解决方案下性能不是问题,实在不行,你还可以用boost::python来写个c/c++调用库来解决性能问题。
下面的测试说明,对于性能,原生python比较慢,在windows下python比linux,macos要快,用pypy后相当于java,c#速度,pypy,c#在windows下受益msvc表现较快,,go语言速度表现比较稳定,c语言理论上是最快,但受环境和编译器影响较大。对c#,java可能在GC垃圾回收时会表现不稳定,因为在oop中有大量计算后可能要回收垃圾内存对象,这个没有用到oop,只是纯计算,理论上还是c/c++语言最快。
python和java比,运行速度比java慢,java强大于改进n次的强大jre,但python在很多领域能调用很多现成的开源库,在数据分析中有优势,pyhton的代码比java要简洁,容易入门和使用。在优化的计算库帮助下,如numpy numba,pandas,scikit-learn,python的实际问题运算性能并不低于java。java主要是框架太多,相对复杂,java主要用于业务程序开发,符合软件工程理论,可伸缩性强,强类型有利于对程序的静态检查分析。java随着安卓,hadoop,spark的兴起,加入java语言的公司很多,性能也可以通过优化解决很多问题。很多服务器如ubuntu server,centos都默认支持python,而java虚拟机需要安装配置,python的安装使用也相对简单。python的库有开箱即用感,很多业务领域,你可能还在用oop写代码,考虑设计模式,用锄头挖沟时,而python调用挖掘机api已经炒菜完工开饭了,缺点是油耗比较大。