做過幾年開發或測試開發的人員,時常會覺得很迷茫,新功能的開發或是老功能的維護,基本上是在堆程式碼了。本文主要講述在系統設計和架構方面的效能最佳化供大家學習, 有些內容涉及到具體產品,做了些改動或單獨寫了測試程式碼演示。
專案背景:
實現一個高效能的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
C:\Python27\python.exeD:/RCC/mp/src/test.py
14.4940001965
C:\pypy-2.1\pypy.exeD:/RCC/mp/src/test.py
先告一段落,太長了大家看起來累,下一篇文章將會介紹程式碼優化部分。
【推薦課程:
Python影片教學】
以上是用python實作高效能測試工具(一)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,內存效率段

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero

Inpython,一個“列表” isaversatile,mutableSequencethatCanholdMixedDatateTypes,而“陣列” isamorememory-sepersequeSequeSequeSequeSequeRingequiringElements.1)列表

pythonlistsandArraysareBothable.1)列表Sareflexibleandsupportereceneousdatabutarelessmory-Memory-Empefficity.2)ArraysareMoremoremoremoreMemoremorememorememorememoremorememogeneSdatabutlesserversEversementime,defteringcorcttypecrecttypececeDepeceDyusagetoagetoavoavoiDerrors。

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

通過每天投入2小時的Python學習,可以有效提升編程技能。 1.學習新知識:閱讀文檔或觀看教程。 2.實踐:編寫代碼和完成練習。 3.複習:鞏固所學內容。 4.項目實踐:應用所學於實際項目中。這樣的結構化學習計劃能幫助你係統掌握Python並實現職業目標。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。