首頁 後端開發 Python教學 用python實作高效能測試工具(一)

用python實作高效能測試工具(一)

Apr 10, 2019 am 11:17 AM
python 自動化測試

做過幾年開發或測試開發的人員,時常會覺得很迷茫,新功能的開發或是老功能的維護,基本上是在堆程式碼了。本文主要講述在系統設計和架構方面的效能最佳化供大家學習, 有些內容涉及到具體產品,做了些改動或單獨寫了測試程式碼演示。

專案背景:

    實現一個高效能的diameter 測試工具, 接受1000 傳送1000,雙向要支援到2000則訊息每秒。 diameter 協定的原始碼是從這裡下載的 http://sourceforge.net/projects/pyprotosim/, 這個開源套件也支援SMPP, RADIUS, DHCP, LDAP,  而且新增加的協定欄位都可以在dictionary配置屬性,不需要修改程式碼,實在方便。初始階段我們為了實現功能,沒有怎麼考慮效能的問題,很多地方用的是單線程,初始效能只能支援到50 訊息。硬體環境: SunFire 4170, 16 核,每核心2.4 G 

     Python 效能最佳化的幾個方向:

            1. 替代方案jython, pysco已經對python 2.7不支援了,就沒有測試,據說跑的很C語言一樣快。對pypy, jython做了簡單測試,pypy在不同機器上可以提高到5-10倍的樣子,Jython雖然可以避免python GIL的問題(因為jython是跑在java虛擬機上的),但測試看來,效率提升很少。

            2. 最佳化程式碼

            3. 改變系統架構,多線程,多重處理或協程# 

## :  換Python解析器     如果換Python解析器能達到效能需求是最便宜的方案了,不需要對程式碼做任何改變。下面程式碼只是為了說明pypy的效果,單獨寫的測試程式碼,在windows下運行的結果。在linux下機器上運作效果會更好些。

#!/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的運行結果

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的運作結果效果還是明顯的,雖然能提高5倍(linux機器上),50*5, 離2000還差好遠。 pypy對python 多執行緒的支援沒有明顯效果,這個在後面會提到。


先告一段落,太長了大家看起來累,下一篇文章將會介紹程式碼優化部分。

【推薦課程:

Python影片教學

#

以上是用python實作高效能測試工具(一)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

模板化的優點和缺點有哪些? 模板化的優點和缺點有哪些? May 08, 2024 pm 03:51 PM

模板化的優點和缺點有哪些?

Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2 Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2 Jul 01, 2024 am 07:22 AM

Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2

怎麼下載deepseek 小米 怎麼下載deepseek 小米 Feb 19, 2025 pm 05:27 PM

怎麼下載deepseek 小米

deepseek怎麼問他 deepseek怎麼問他 Feb 19, 2025 pm 04:42 PM

deepseek怎麼問他

NET40是什麼軟體 NET40是什麼軟體 May 10, 2024 am 01:12 AM

NET40是什麼軟體

deepseek該怎麼搜索 deepseek該怎麼搜索 Feb 19, 2025 pm 05:18 PM

deepseek該怎麼搜索

瀏覽器插件是什麼語言寫的 瀏覽器插件是什麼語言寫的 May 08, 2024 pm 09:36 PM

瀏覽器插件是什麼語言寫的

deepseek怎麼編程 deepseek怎麼編程 Feb 19, 2025 pm 05:36 PM

deepseek怎麼編程

See all articles