Python を使用して高性能テスト ツールを実装する (1)

little bottle
リリース: 2019-04-10 15:34:36
転載
3438 人が閲覧しました

数年間開発やテストを行っている人はよく混乱しますが、新しい機能の開発や古い機能のメンテナンスは基本的にコードの山です。この記事では、誰でも学べるシステム設計とアーキテクチャにおけるパフォーマンスの最適化について主に説明しますが、一部の内容は特定の製品に関係するものであり、一部変更が加えられたり、テスト コードのデモが別途作成されたりしています。

プロジェクトの背景:

高性能直径テスト ツールを実装し、1000 件を受け入れ、1000 件を送信し、両方向で 1 秒あたり最大 2000 件のメッセージをサポートします。 。 Diameter プロトコルのソース コードは http://sourceforge.net/projects/pyprotosim/ からダウンロードされます。このオープン ソース パッケージは SMPP、RADIUS、DHCP、LDAP もサポートしており、新しく追加されたプロトコル フィールドは辞書で構成できます。コードを変更する必要がある場合に非常に便利です。初期段階では、機能を実装するためにパフォーマンスの問題は考慮されておらず、多くの場所でシングル スレッドが使用され、初期パフォーマンスでは 50 メッセージしかサポートできませんでした。ハードウェア環境: SunFire 4170、16 コア、コアあたり 2.4 G

Python パフォーマンス最適化のためのいくつかの方向性:

1. Python パーサーを変更します: 一般的な Python パーサーには、pysco、pypy、cython、jython、および pysco no が含まれます。 Python 2.7のサポートが長くなったのでテストは不要ですが、C言語と同等の速度で動作すると言われています。 pypy と jython で簡単なテストを行いました。pypy は異なるマシン上で 5 ~ 10 倍に改善できます。Jython は Python GIL の問題を回避できますが (jython は Java 仮想マシン上で実行されるため)、テストによると効率が低いようです。利益は最小限です。

2. コードを最適化する

3. システム アーキテクチャ、マルチスレッド、マルチプロセス、またはコルーチンを変更する

解決策 1 : 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 効果は依然として明らかですが、(Linux マシンの場合) 5 倍の 50*5 に増やすことができますが、これはまだ 2000 には程遠いです。 pypy は、後で説明する Python のマルチスレッド サポートに明らかな影響を与えません。

まず終わりにしましょう。長すぎてみんな疲れているようです。次の記事ではコードの最適化部分を紹介します。

[おすすめコース: Python ビデオ チュートリアル ]

以上がPython を使用して高性能テスト ツールを実装する (1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!