python2.7 与 go1.2简单性能比较
过完年刚上班,项目还没有开始,对于即将到来的项目,想尝试是否可以找到一个开发效率接近python,运行效率接近静态语言的编程语言,选择基本就是scala和go,公司的技术组成基本都是c派的,scala暂不考虑,闲暇时间对python2.7和go1.2做了个性能比较,作为一个参考吧,测试方法很粗糙,结果不尽准确,目的只为得到大概的运行效率的比较。
网上看到过go的web模块和python2.7的tornado,twisted框架等作比较,基本都是以微弱优势胜出,但是因为涉及到io操作,无法对计算效率作比较,我简单对cpu intensive的任务做了一个单线程情况下的比较
测试任务选择工作中常见的字符串操作,数字运算,json的编码解码
环境:
1. go1.2,encoing/json, 编译器使用go build
2. python2.7,cjson1.0.5
结果
| node.js | python | go1.2 | |
| 10000次字符串split | 2.79s | 1.48s | 1.275s |
| 1000000次浮点数乘法 | 0.088s | 0.18s | 0.011s |
| 10000次json串解码 | 2.32s | 1.46s | 8.29s |
| 10000次json串编码 | 3.29s | 3.222s | 10.988s |
结果浅析:
1. 字符串split几乎平手,没有区别
2. 浮点数运算,python毕竟是动态语言,效率相差2个数量级以上
3. json串编码解码,因为用的cjson模块是c的python模块,go应该不是对手,但是相差3-5倍确实也是一个瓶颈
PS:
使用的json数据
{"status": "STATUS_OK", "arr_city": "KMG", "dep_city": "CAN", "invoke_result": "", "go_date": "REP_DATE", "segment": [{"arr_city": "KMG", "flights": {"ZH9645": {"A": "KMG", "P": "320", "S": "0", "R": "2125", "E": "1855", "D": "CAN", "X": "0", "M": "0", "cabin": {"A": "4", "B": "A", "E": "Q", "D": "Q", "G": "A", "F": "8", "H": "A", "K": "A", "J": "Q", "M": "A", "L": "A", "O": "Q", "N": "Q", "Q": "Q", "P": "2", "S": "Q", "U": "A", "T": "Q", "W": "Q", "V": "Q", "Y": "A", "X": "3", "Z": "Q"}, "N": "ZH9645"}, "KY9645": {"A": "KMG", "P": "320", "S": "0", "R": "2125", "E": "1855", "D": "CAN", "X": "0", "M": "0", "cabin": {"B": "A", "E": "Q", "G": "A", "F": "8", "H": "A", "K": "A", "J": "Q", "M": "A", "L": "A", "Q": "Q", "U": "A", "T": "Q", "W": "Q", "V": "Q", "Y": "A", "Z": "Q"}, "N": "KY9645"}, "MU5738": {"A": "KMG", "P": "73E", "S": "0", "R": "2135", "E": "1900", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "A", "E": "A", "G": "Q", "F": "8", "H": "A", "K": "A", "M": "A", "L": "A", "N": "A", "Q": "A", "P": "3", "S": "Q", "R": "Q", "T": "Q", "V": "Q", "Y": "A", "Z": "Q"}, "N": "MU5738"}, "CA3667": {"A": "KMG", "P": "320", "S": "0", "R": "2230", "E": "2005", "D": "CAN", "X": "0", "M": "0", "cabin": {"B": "A", "E": "Q", "G": "A", "F": "8", "H": "A", "K": "A", "M": "A", "L": "A", "Q": "A", "S": "Q", "U": "A", "T": "Q", "V": "Q", "Y": "A"}, "N": "CA3667"}, "KY9623": {"A": "KMG", "P": "320", "S": "0", "R": "2230", "E": "2005", "D": "CAN", "X": "0", "M": "0", "cabin": {"B": "A", "E": "Q", "G": "A", "F": "8", "H": "A", "K": "A", "J": "A", "M": "A", "L": "A", "Q": "A", "U": "A", "T": "Q", "W": "Q", "V": "Q", "Y": "A", "Z": "A"}, "N": "KY9623"}, "MU5732": {"A": "KMG", "P": "333", "S": "0", "R": "1325", "E": "1055", "D": "CAN", "X": "0", "M": "0", "cabin": {"B": "A", "E": "A", "G": "Q", "F": "A", "H": "A", "K": "A", "M": "A", "L": "A", "N": "Q", "Q": "3", "P": "A", "S": "Q", "R": "Q", "T": "Q", "V": "Q", "Y": "A", "Z": "Q"}, "N": "MU5732"}, "CZ3419": {"A": "KMG", "P": "320", "S": "0", "R": "0005", "E": "2140", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "A", "P1": "5", "E": "A", "G": "A", "F": "8", "H": "A", "K": "A", "M": "A", "L": "A", "O": "C", "N": "Q", "Q": "A", "P": "5", "S": "A", "R": "Q", "U": "A", "T": "A", "W": "A", "V": "Q", "Y": "A", "X": "Q", "Z": "5"}, "N": "CZ3419"}, "CA3592": {"A": "KMG", "P": "320", "S": "0", "R": "2125", "E": "1855", "D": "CAN", "X": "0", "M": "0", "cabin": {"B": "A", "E": "Q", "G": "A", "F": "8", "H": "A", "K": "A", "M": "A", "L": "A", "Q": "Q", "S": "Q", "U": "A", "T": "Q", "V": "Q", "Y": "A"}, "N": "CA3592"}, "CZ3415": {"A": "KMG", "P": "738", "S": "0", "R": "1520", "E": "1245", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "8", "P1": "3", "E": "Q", "G": "A", "F": "8", "H": "A", "K": "A", "M": "A", "L": "Q", "O": "C", "N": "Q", "Q": "Q", "P": "3", "S": "Q", "R": "Q", "U": "8", "T": "A", "W": "A", "V": "Q", "Y": "A", "X": "Q", "Z": "3"}, "N": "CZ3415"}, "ZH9623": {"A": "KMG", "P": "320", "S": "0", "R": "2230", "E": "2005", "D": "CAN", "X": "0", "M": "0", "cabin": {"A": "4", "B": "A", "E": "Q", "D": "Q", "G": "A", "F": "8", "H": "A", "K": "A", "J": "A", "M": "A", "L": "A", "O": "Q", "N": "Q", "Q": "A", "P": "2", "S": "Q", "U": "A", "T": "Q", "W": "Q", "V": "Q", "Y": "A", "X": "2", "Z": "A"}, "N": "ZH9623"}, "CZ3477": {"A": "KMG", "P": "319", "S": "0", "R": "0950", "E": "0740", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "6", "P1": "2", "E": "6", "G": "A", "F": "5", "H": "A", "K": "A", "M": "8", "L": "8", "O": "C", "N": "Q", "Q": "7", "P": "2", "S": "A", "R": "Q", "U": "6", "T": "A", "W": "A", "V": "Q", "Y": "A", "X": "Q", "Z": "6"}, "N": "CZ3477"}, "MU3005": {"A": "KMG", "P": "319", "S": "0", "R": "1615", "E": "1345", "D": "CAN", "X": "0", "M": "1", "cabin": {"E": "A", "H": "A", "K": "A", "M": "A", "L": "A", "N": "Q", "S": "Q", "R": "Q", "V": "Q", "Y": "A"}, "N": "MU3005"}, "MU5740": {"A": "KMG", "P": "737", "S": "0", "R": "0955", "E": "0720", "D": "CAN", "X": "0", "M": "0", "cabin": {"B": "A", "E": "A", "G": "Q", "F": "8", "H": "A", "K": "A", "M": "A", "L": "A", "N": "A", "Q": "Q", "P": "4", "S": "A", "R": "A", "T": "Q", "V": "Q", "Y": "A", "Z": "Q"}, "N": "MU5740"}, "MU5742": {"A": "KMG", "P": "737", "S": "0", "R": "1830", "E": "1555", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "A", "E": "A", "G": "Q", "F": "8", "H": "A", "K": "A", "M": "A", "L": "A", "N": "A", "Q": "S", "P": "3", "S": "Q", "R": "Q", "T": "Q", "V": "Q", "Y": "A", "Z": "Q"}, "N": "MU5742"}, "KY8286": {"A": "KMG", "P": "73G", "S": "0", "R": "0910", "E": "0650", "D": "CAN", "X": "0", "M": "0", "cabin": {"B": "A", "E": "S", "G": "A", "H": "A", "K": "A", "J": "A", "M": "A", "L": "A", "N": "5", "Q": "A", "S": "Q", "U": "S", "T": "S", "W": "S", "V": "A", "Y": "A", "X": "S", "Z": "A"}, "N": "KY8286"}, "CZ3409": {"A": "KMG", "P": "738", "S": "0", "R": "1105", "E": "0840", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "A", "P1": "6", "E": "Q", "G": "A", "F": "7", "H": "A", "K": "A", "M": "A", "L": "Q", "O": "C", "N": "Q", "Q": "Q", "P": "6", "S": "Q", "R": "Q", "U": "A", "T": "A", "W": "A", "V": "Q", "Y": "A", "X": "Q", "Z": "6"}, "N": "CZ3409"}, "CZ3407": {"A": "KMG", "P": "319", "S": "0", "R": "1615", "E": "1345", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "A", "P1": "2", "E": "Q", "G": "A", "F": "7", "H": "A", "K": "A", "M": "A", "L": "Q", "O": "C", "N": "Q", "Q": "Q", "P": "2", "S": "Q", "R": "Q", "U": "A", "T": "A", "W": "A", "V": "Q", "Y": "A", "X": "Q", "Z": "S"}, "N": "CZ3407"}, "CZ3449": {"A": "KMG", "P": "738", "S": "0", "R": "1900", "E": "1625", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "6", "P1": "2", "E": "Q", "G": "A", "F": "7", "H": "A", "K": "A", "M": "A", "L": "Q", "O": "C", "N": "Q", "Q": "Q", "P": "2", "S": "A", "R": "Q", "U": "A", "T": "A", "W": "A", "V": "Q", "Y": "A", "X": "Q", "Z": "S"}, "N": "CZ3449"}, "CZ5202": {"A": "KMG", "P": "333", "S": "0", "R": "1325", "E": "1055", "D": "CAN", "X": "0", "M": "0", "cabin": {"E": "Q", "G": "A", "H": "A", "K": "A", "M": "A", "Q": "Q", "S": "Q", "T": "A", "V": "Q", "Y": "A"}, "N": "CZ5202"}, "CZ3487": {"A": "KMG", "P": "319", "S": "0", "R": "1355", "E": "1125", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "2", "P1": "2", "E": "Q", "G": "A", "F": "8", "H": "8", "K": "A", "M": "8", "L": "Q", "O": "C", "N": "Q", "Q": "Q", "P": "2", "S": "Q", "R": "Q", "U": "3", "T": "A", "W": "A", "V": "Q", "Y": "A", "X": "Q", "Z": "S"}, "N": "CZ3487"}, "CZ3489": {"A": "KMG", "P": "319", "S": "0", "R": "2100", "E": "1825", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "L", "P1": "4", "E": "Q", "G": "L", "F": "7", "H": "L", "K": "L", "M": "L", "L": "Q", "O": "C", "N": "Q", "Q": "Q", "P": "4", "S": "Q", "R": "Q", "U": "L", "T": "L", "W": "A", "V": "Q", "Y": "L", "X": "Q", "Z": "2"}, "N": "CZ3489"}, "CZ5536": {"A": "KMG", "P": "737", "S": "0", "R": "1830", "E": "1555", "D": "CAN", "X": "0", "M": "1", "cabin": {"E": "Q", "G": "A", "H": "A", "K": "A", "M": "A", "Q": "Q", "S": "A", "T": "A", "V": "Q", "Y": "A"}, "N": "CZ5536"}, "MU5772": {"A": "KMG", "P": "73E", "S": "0", "R": "0040", "E": "2220", "D": "CAN", "X": "0", "M": "0", "cabin": {"B": "A", "E": "A", "G": "Q", "F": "8", "H": "A", "K": "A", "M": "A", "L": "A", "N": "A", "Q": "4", "P": "3", "S": "A", "R": "A", "T": "Q", "V": "A", "Y": "A", "Z": "Q"}, "N": "MU5772"}, "ZH3162": {"A": "KMG", "P": "73G", "S": "0", "R": "0910", "E": "0650", "D": "CAN", "X": "0", "M": "0", "cabin": {"B": "A", "E": "S", "G": "A", "H": "A", "K": "A", "J": "A", "M": "A", "L": "A", "Q": "A", "U": "S", "T": "S", "W": "S", "V": "A", "Y": "A", "Z": "A"}, "N": "ZH3162"}, "MU5776": {"A": "KMG", "P": "737", "S": "0", "R": "1430", "E": "1205", "D": "CAN", "X": "0", "M": "1", "cabin": {"B": "A", "E": "A", "G": "Q", "F": "8", "H": "A", "K": "A", "M": "A", "L": "A", "N": "Q", "Q": "S", "P": "3", "S": "Q", "R": "Q", "T": "Q", "V": "Q", "Y": "A", "Z": "Q"}, "N": "MU5776"}}, "flight_count": 25, "flight_date": "REP_DATE", "dep_city": "CAN"}], "back_date": "20131020", "cost": "", "time": "", "type": "ow", "invoke_time": ""}
感觉对于公司眼前的项目,python的优势更大些。。。。
感觉go还有挺长的路要走哈。。。。
水平有限,勿喷。。。
python2.7 与 go1.2简单性能比较的更多相关文章
- SQL 语句判断记录是否存在(最简洁简单性能最优)
今天查了下,发现网上的没有一个sql语句写的好的. 判断记录是否存在,要不是语句不够简洁,要不就是性能有很大问题. 我进行了优化后,最简洁简单性能最优的的sql语句,用来判断表中的记录是否存在: se ...
- Nginx简单性能调优
Nginx默认没有开启利用多核CPU (忍不住吐槽,然怪总感觉服务器性能没充分发挥), 我们可以通过增加worker_cpu_affinity配置参数来充分利用多核CPU.CPU是任务处理,计算最关键 ...
- ESXi内虚拟机带快照与不带快照的情况下简单性能对比.
1. 两个虚拟机配置相同都为2vCPU 8G内存 一个虚拟机内包含较多的快照且有内容梗概 一个虚拟机不包含快照直接只有一个虚拟机的vmdk磁盘文件 操作系统未windows server 2008r2 ...
- 使用python2与python3创建一个简单的http服务(基于SimpleHTTPServer)
python2与python3基于SimpleHTTPServer创建一个http服务的方法是不同的: 一.在linux服务器上面检查一下自己的python版本:如: [root@zabbix ~]# ...
- mysql简单性能排查
mysql> show variables; mysql> show processlist; mysql> show status; mysql> show global s ...
- python2.7_1.14_编写一个简单的回显客户端/服务器应用
1.服务端 server.py # -*- coding: utf-8 -*- import socket import argparse host = 'localhost' data_payloa ...
- javascript简单性能问题及学习笔记
最近在看一本书:<高性能javaScript>,发现自己平时写js存在很多小细节上的问题,虽然这些问题不会导致程序运行出错,但是会导致界面加载变慢,用户体验变差,那么我们就来细细数一下应该 ...
- tomcat简单性能优化
1.内存使用配置 2.最大连接数配置
- 最大化 AIX 上的 Java 性能,第 1 部分: 基础
http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf1.html 最大化 AIX 上的 Java 性能,第 ...
随机推荐
- MULE-ET0 、 ET1、ET2、PT1、PT2
设计验证阶段中的五个样车试制概念 骡子车( mule car ) ET0 第一轮设计工程样车试制 ET1 第二轮设计工程样车试制 ET2 第一轮产品工装样车试制 PT1 第二轮产品工装样车试制 PT2 ...
- 根据View获取该控制器
//根据View获取控制器 - (UIViewController*)viewController { for (UIView* next = [self superview]; next; next ...
- SQL SERVER中强制类型转换cast和convert的区别
在SQL SERVER中,cast和convert函数都可用于类型转换,其功能是相同的, 只是语法不同. cast一般更容易使用,convert的优点是可以格式化日期和数值. 代码 select CO ...
- LVS + keepalived + tomcat负载均衡及高可用实现(初级)
1.首先检测Linux服务器是否支持ipvs 执行如下命令:modprobe -l|grep ipvs 输出: kernel/net/netfilter/ipvs/ip_vs.ko kernel/ne ...
- Mybatis 一对一,一对多,多对一,多对多的理解
First (一对一) 首先我来说下一对一的理解,就是一个班主任只属于一个班级,一个班级也只能有一个班主任.好吧这就是对于一对一的理解 怎么来实现呢? 这里我介绍了两种方式: 一种是:使用嵌套结果映射 ...
- 1.4 测试各阶段(单元、集成、系统 、Alpha、Beta、验收)
单元测试:单元测试是对软件基本组成单元(软件设计的最小单位)进行正确性检验的测试工作,如函数.过程(function,procedure)或一个类的方法(method).单元测试是一个方法层面上的测试 ...
- 【贪心】 poj 1032 和为n的若干数最大乘积
给出n,把n分解为若干不相同数之和,使之乘积最大.贪心,Discuss里面的思路:把n分解为从2开始的连续整数,如果有多,则从高位开始依次加1.如26,我们得到2+3+4+5+6,此时还剩余6(26- ...
- Lua 迭代器
第一种:lua迭代器的实现依赖于闭包(closure)特性 1.1 第一个简单的写法 --迭代器写法 function self_iter( t ) local i = 0 return functi ...
- java获取数据库的列名、类型等信息
当你使用和学习JDK的时候,可以查看并学习它所提供给你的两个ResultSetMetaData 和DataBaseMetaData类的源码并很好的了解它们的实现原理和思路,JDBC中提供有两种源数据, ...
- popoverController(iPad)
一.设置尺寸 提示:不建议,像下面这样吧popover的宽度和高度写死. 1 //1.新建一个内容控制器 2 YYMenuViewController *menuVc=[[YYMenuViewCont ...