忽然想比较一下  python  nodejs  go 的web 响应,就简单的写了个性能对比测试。

测试目标:
1 . i5 4核 32G  同一机器   linux 
2.  用python(flask线程模式)  nodejs  go  分别写了简单的 echo 服务

测试工具:
wrk

服务器清单:

python  flask      http://192.168.0.208:5050/
nodejs express http://192.168.0.208:5056/
go server http://192.168.0.208:5057/

测试脚本:

wrk -c100 -t10 -d30s  http://192.168.0.208:5050/
wrk -c100 -t10 -d30s http://192.168.0.208:5056/
wrk -c100 -t10 -d30s http://192.168.0.208:5057/ wrk -c1000 -t10 -d30s http://192.168.0.208:5050/
wrk -c1000 -t10 -d30s http://192.168.0.208:5056/
wrk -c1000 -t10 -d30s http://192.168.0.208:5057/

测试结果:

100 终端10线程

Running 30s test @ http://192.168.0.208:5050/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .24ms .29ms .28ms 90.54%
Req/Sec 137.84 54.19 202.00 63.72%
requests in .03s, .79MB read
Socket errors: connect , read , write , timeout
Requests/sec: 956.35
Transfer/sec: .62KB hylas@keras208:~$ wrk -c100 -t10 -d30s http://192.168.0.208:5056/
Running 30s test @ http://192.168.0.208:5056/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .37ms .63us .71ms 98.57%
Req/Sec .25k 253.62 .32k 97.80%
requests in .01s, .82MB read
Requests/sec: 42284.18
Transfer/sec: .29MB hylas@keras208:~$ wrk -c100 -t10 -d30s http://192.168.0.208:5057/
Running 30s test @ http://192.168.0.208:5057/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .20ms .19ms .37ms 91.89%
Req/Sec .93k .45k .58k 72.80%
requests in .07s, .45MB read
Requests/sec: 138501.94
Transfer/sec: .53MB

1000终端 10 线程

hylas@keras208:~$ wrk -c1000 -t10 -d30s  http://192.168.0.208:5050/
Running 30s test @ http://192.168.0.208:5050/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .59ms .37ms .97s 91.52%
Req/Sec 129.50 92.32 610.00 66.97%
requests in .09s, .28MB read
Socket errors: connect , read , write , timeout
Requests/sec: 1022.24
Transfer/sec: .57KB hylas@keras208:~$ wrk -c1000 -t10 -d30s http://192.168.0.208:5056/
Running 30s test @ http://192.168.0.208:5056/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .00ms .27ms .53ms 96.69%
Req/Sec .01k 480.69 .12k 94.63%
requests in .09s, .03MB read
Requests/sec: 39545.31
Transfer/sec: .88MB hylas@keras208:~$ wrk -c1000 -t10 -d30s http://192.168.0.208:5057/
Running 30s test @ http://192.168.0.208:5057/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .17ms .92ms .96ms 91.23%
Req/Sec .94k .57k .62k 70.73%
requests in .09s, .57MB read
Requests/sec: 127325.42
Transfer/sec: .79MB

结论:

1.  100 终端时:python 延时最大,与另外两个相差一个数量级 ,  nodejs go 差不多。 Req/Sec 比例分别是 0.13 : 4:13 , go能大大 13k/s
2.  1000 终端时: nodejs 和 go 的延时增加,但还是明显优与 python ,   Req/Sec  保持稳定 python 最低,nodejs :go  3:12  go的峰值 79k/s
3.  在高并发web服务中 首选 go  , nodejs  次之   python 最弱

ps: 以上结论未考虑 开发效率,人员薪资成本等因素

各种语言web性能简单对比测试的更多相关文章

  1. web性能优化之--合理使用http缓存和localStorage做资源缓存

    一.前言 开始先扯点别的: 估计很多前端er的同学应该遇到过:在旧项目中添加新的功能模块.或者修改一些静态文件时候,当代码部署到线上之后,需求方验收OK,此时你送了一口气,当你准备开始得意于自己的ma ...

  2. Web性能优化 高并发网站解决 单例 已看1

    Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面1.压缩源码和图片JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG ...

  3. [转]基于phantomJS实现web性能监控

    1.web性能监控背景描述 上期分享的<Web性能监控自动化探索之路–初识WebPageTest>从依赖webpagetest的角度给出了做性能日常检查的方案,但由于依赖结构相对复杂我们需 ...

  4. Go语言web框架 gin

    Go语言web框架 GIN gin是go语言环境下的一个web框架, 它类似于Martini, 官方声称它比Martini有更好的性能, 比Martini快40倍, Ohhhh….看着不错的样子, 所 ...

  5. 最好的6个Go语言Web框架

    原文:Top 6 web frameworks for Go as of 2017 作者:Edward Marinescu 译者:roy 译者注:本文介绍截至目前(2017年)最好的6个Go语言Web ...

  6. Web性能优化:What? Why? How?

    为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...

  7. Web性能优化-合并js与css,减少请求

    Web性能优化已经是老生常谈的话题了, 不过笔者也一直没放在心上,主要的原因还是项目的用户量以及页面中的js,css文件就那几个,感觉没什么优化的.人总要进步的嘛,最近在被angularjs吸引着,也 ...

  8. web性能优化——浏览器相关

    简介 优化是一个持续的过程.所以尽可能的不要有人为的参与.所以能自动化的或者能从架构.框架级别解决的就最更高级别解决. 这样即能实现面对开发人员是透明的.不响应,又能确保所有资源都是被优化过的. 场景 ...

  9. Web性能API——帮你分析Web前端性能

    前端性能统计必备api,有不知道的吗? 正文从这开始- 开发一个现代化的互联网网站是一项复杂的任务,需要各种职能的密切合作以应对用户日新月异的需求.其中,网页的性能直接决定了用户的体验,而随着新型客户 ...

随机推荐

  1. Android开发 GradientDrawable详解

    前言 GradientDrawable类似与Xml布局里的shape,常用在一些自己封装的对话框控件的背景或者其他View中,优势是不需要你在带着xml布局文件一起封包.. 画线 GradientDr ...

  2. HTML和css简单日常总结

    今天主要学习了两个部分:第一部分html:在w3school学习了一些标签的使用和一些属性和方法,例如一些标签<a>,<h1><h6><from>< ...

  3. vue-resourse简单使用方法

    一.安装引用 安装: npm install vue-resource --save-dev 引用: /*引入Vue框架*/ import Vue from 'vue' /*引入资源请求插件*/ im ...

  4. SPSS科普 | 统计描述

    SPSS科普 | 统计描述 统计描述的目的就是了解数据的基本特征和分布规律,为进一步合理地选择统计方法提供依据.常用的有Frequencies.Descriptives 和Explore过程. 一.F ...

  5. sqlmap:入门(手工注入)

    一. 联合查询注入union(less-1) 1. union操作符用于合并两个或多个select语句结果集: 2. union后的select语句必须拥有和最前的select语句拥有相同数量的字段, ...

  6. 基于baseline、svd和stochastic gradient descent的个性化推荐系统

    文章主要介绍的是koren 08年发的论文[1],  2.3部分内容(其余部分会陆续补充上来).koren论文中用到netflix 数据集, 过于大, 在普通的pc机上运行时间很长很长.考虑到写文章目 ...

  7. Java超简明入门学习笔记(二)

    Java编程思想第4版学习笔记(二) 第三章 操作符 & 第四章 控制执行流程(流程控制语句)         第三章和第四章的内容主要是讲操作符和流程控制语句,Java的大多数操作符和流程控 ...

  8. 编程之法:面试和算法心得(旋转字符串java实现)

    内容全部来自编程之法:面试和算法心得一书,实现是自己写的使用的是java 题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b ...

  9. mysql三表联合查询,结果集合并

    参考: mysql 结果集去重复值并合并成一行 SQL 三表联查 数据库三表连接查询怎么做 合并: MySQL中group_concat函数 完整的语法如下: group_concat([DISTIN ...

  10. Luogu P3496 [POI2010]GIL-Guilds(贪心+搜索)

    P3496 [POI2010]GIL-Guilds 题意 给一张无向图,要求你用黑(\(K\))白(\(S\))灰(\(N\))给点染色,且满足对于任意一个黑点,至少有一个白点和他相邻:对于任意一个白 ...