python硬件测试开发_用python实现高性能测试工具(一)
做過幾年開發(fā)或者測(cè)試開發(fā)的人員,時(shí)常會(huì)覺得很迷茫,新功能的開發(fā)或者老功能的維護(hù),基本是在堆代碼了。本文主要講述在系統(tǒng)設(shè)計(jì)和架構(gòu)方面的性能優(yōu)化供大家學(xué)習(xí), 有些內(nèi)容涉及到具體產(chǎn)品,做了些改動(dòng)或者單獨(dú)寫了測(cè)試代碼演示。
項(xiàng)目背景:
實(shí)現(xiàn)個(gè)高性能的diameter 測(cè)試工具, 接受1000+發(fā)送1000,雙向要支持到2000條消息每秒。 diameter 協(xié)議的源代碼是從這里下載的 http://sourceforge.net/projects/pyprotosim/, 這個(gè)開源包還支持SMPP, RADIUS, DHCP, LDAP, 而且新增加的協(xié)議字段都可以在dictionary配置屬性,不需要修改代碼,實(shí)在是方便。 初始階段我們?yōu)榱藢?shí)現(xiàn)功能,沒有怎么考慮性能的問題,很多地方用的是單線程,初始性能只能支持到50 消息。硬件環(huán)境: SunFire 4170, 16 核,每核2.4 G
Python性能優(yōu)化的幾個(gè)方向:
1. 換python的解析器:常見的python解析器有pysco,pypy, cython, jython, pysco已經(jīng)對(duì)python 2.7不支持了,就沒有測(cè)試,據(jù)說跑的很C語言一樣快。對(duì)pypy, jython做了簡(jiǎn)單測(cè)試,pypy在不同機(jī)器上可以提高到5-10倍的樣子,Jython雖然可以避免python GIL的問題(因?yàn)閖ython是跑在java虛擬機(jī)上的),但測(cè)試看來,效率提升很少。
2. 優(yōu)化代碼
3. 改變系統(tǒng)架構(gòu),多線程,多進(jìn)程或者協(xié)程
方案1: 換Python解析器
如果換Python解析器能達(dá)到性能需求是最廉價(jià)的方案了,不需要對(duì)代碼做任何改動(dòng)。下面代碼只是為了說明pypy的效果,單獨(dú)寫的測(cè)試代碼,在windows下運(yùn)行的結(jié)果。在linux下機(jī)器上運(yùn)行效果會(huì)更好些。#!/usr/bin/env python
#coding=utf-8
import time
def check(num):
a = list(str(num))
b = a[::-1]
if a == b:
return True
return False
def test():
all = xrange(1,10**7)
for i in all:
if check(i):
if check(i**2):
i**2
if __name__ == '__main__':
start=time.time()
test()
print time.time()-start
分別用python和pypy的運(yùn)行結(jié)果C:\Python27\python.exeD:/RCC/mp/src/test.py
14.4940001965
C:\pypy-2.1\pypy.exeD:/RCC/mp/src/test.py
4.37800002098
可以看出來pypy的運(yùn)行結(jié)果效果還是明顯的,雖然能提高5倍(linux機(jī)器上),50*5, 離2000還差好遠(yuǎn)。 pypy對(duì)python 多線程的支持沒有明顯效果,這個(gè)在后面會(huì)提到。
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的python硬件测试开发_用python实现高性能测试工具(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 七边形简单画法步骤图_零基础国画教程:分
- 下一篇: python模糊查询_python实现字