アバロン-FSN
アバロン-FSNは、あなたのコードCythonのものとすることができるPythonのコンパイラ構築ツールであります
アバロン-FSNを使用するメリット
- コードのCython:コードはPYDとしてWindowsでコンパイルされたコードは、ソースコードのLinuxの.soは、効果的な保護にコンパイルされます
- パフォーマンスの向上:任意のコードレベルの最適化の場合に行う能力、Pythonコードの性能向上
インストール
アバロン-FSNインストールPIP
プロジェクトをコンパイルします
アバロン-FSN-ビルドにbuild_ext
コンパイルが完了した後、内の対応ファイル./build/lib*
下
使用後にコンパイルされたファイル
アバロン-FSN-リリース
このコマンドを実行するとしますbuild
のみリリースのコンパイラ環境を使用して、ルートディレクトリにディレクトリにコンパイルされたファイルを置き換えます
##コンフィギュレーションファイルには、カスタムパラメータがあるとき、あなたはプロジェクトのルートディレクトリに新しいプロファイルを作成することができますavalon-fsn.json
{ "remove_models":[]、 "remove_files":[] }
設定名 | 設定の説明 |
---|---|
remove_models | コンパイルされたモジュールが関与していません |
remove_files | コンパイルされたファイルは参加しません |
性能比較
インポート時間 :DEF()の実行 時間_ = time.time() インポートsysを :DEF make_tree(深さ) なし、なし返さない:そうでない場合深さ = 1 -深さ 戻りmake_tree(深さ)、make_tree(深さ) DEF check_tree(ノード): (左、右)=ノード 残っていない場合:リターン1 リターン1 + check_tree(左)+ check_tree(右) min_depth = 4 MAX_DEPTH = MAX(min_depth + 2、17) stretch_depth = MAX_DEPTH + 1つの 深さの印刷(「ストレッチツリー%D \トンチェック:」%の stretch_depth、check_tree(make_tree(stretch_depth))) long_lived_tree = make_tree(MAX_DEPTH) = 2 ** MAX_DEPTH反復 範囲内の深さ(min_depth、stretch_depth、2) = 0をチェック :範囲(1、反復+ 1)内のiについて チェック+ = check_tree(make_tree(深さ)) プリント( "%D \ T深さの木々 %D \トンチェック:」%(イテレーション、深さ)、チェック) の反復// = 4 プリント( "奥行きの長い住んでいた木を%D \トンチェック:" %の MAX_DEPTH、check_tree(long_lived_tree)) TIME_END =時間.time() 印刷( '時間コスト'、TIME_END -時間_、 'S')
ピュアPythonの
深さ18チェックのストレッチツリー:524287本の 深さ4チェック131072木:4063232本の 深6チェック32768木:4161536本の 深さ8チェック8192木:4186112本の 深さ10チェック2048木:4192256本の 深さ12チェック512木:4193792本の 128木深さの14のチェック:4194176 深さの32本の木16チェック:4194272 深さ17のチェックの長命ツリー:262143 時間が11.279994249343872秒を要しました
のCython
深さ18チェックのストレッチツリー:524287本の 深さ4チェック131072木:4063232本の 深6チェック32768木:4161536本の 深さ8チェック8192木:4186112本の 深さ10チェックの2048木:4192256本の 深さ12チェック512木:4193792本の 128木深さの14のチェック:4194176 深さの32本の木16チェック:4194272 深さ17のチェックの長命ツリー:262143 時間が1.9600331783294678秒を要しました
簡単なコンパイル後、直接のほぼ6倍のパフォーマンスを向上させます