質問

PyFuzzy (Python) または FFLL (C++) ライブラリのいずれかをベースにしたファジー ロジック コントローラーの実装を検討しています。

私は Python で作業したいのですが、それが動作する組み込み環境 (ARM または組み込み x86 proc のどちらも ~64Mbs の RAM) でパフォーマンスが許容できるかどうかわかりません。

主な関心事は、応答時間ができるだけ高速であることです (5 Hz 以上の更新レートが理想的で、2 Hz が必要です)。システムは、RS232 ポートから複数 (おそらく 5 つ) のセンサーを読み取り、ファジー評価の結果に基づいて 2/3 の出力を提供します。

このタスクに対して Python が遅すぎることを心配する必要がありますか?

役に立ちましたか?

解決

一般に、実際に問題が発生するのを確認するまでは、パフォーマンスにこだわるべきではありません。アプリの詳細がわからないため、Python で実装した場合にどのように動作するかはわかりません。まだ実装していないので、あなたも実装できません。

最も使いやすく、最速で実装できるバージョンを最初に実装します。次にベンチマークを行います。そして もし 遅すぎる場合は、3 つのオプションを順番に実行する必要があります。

  • まず、Python コードを最適化します。
  • それでも十分でない場合は、最もパフォーマンスに重要な関数を C/C++ で記述し、それを Python コードから呼び出します。
  • そして最後に、もしあなたが 本当に 最高のパフォーマンスが必要な場合は、すべてを C++ で書き直す必要がある場合があります。しかし、少なくとも Python で動作するプロトタイプが得られ、それをどのように実装すべきかについてより明確なアイデアが得られるでしょう。どのような落とし穴を避けるべきかがわかり、テストや結果の比較に適した実装がすでに完成していることになります。

他のヒント

Pythonは文字列以外の大量のデータを扱うには非常に遅いです。一部の操作では、あなたはそれがC / C ++よりも1000倍遅いことを見ることができるので、はい、あなたはこのに調査し、あなたがPythonでタイムクリティカルなアルゴリズムを作る前に、必要なベンチマークを行う必要があります。

まだメインコード用のPythonを使用することができることながら、そのタイムクリティカルなものは、高速であるように、

しかし、あなたは、C / C ++コードでのモジュールとのpythonを拡張することができます。

それを動作させる、それは、高速動作させるます。

あなたのランタイムのほとんどがCライブラリに費やされている場合は、

、あなたはこれらのライブラリを呼び出すために使用している言語は重要ではありません。書かれたお時間を食べるのライブラリは何語ですか?

あなたの説明からは、(あなたはそれを速くしたいものは何でも、あなたはC、cythonを使用することができます)速度は懸念の多くではありませんが、メモリは次のようになります。 (OSおよびすべての権利?、同様に合うはずです)64 Mbの最大の環境のために、私はPythonは、ターゲットの展開のための適切なツールではないかもしれないことを良いチャンスがあると思います。

あなたが処理するための非自明なロジックを持っている場合は、

、私はまだかかわらず、Pythonでプロトタイプを作成します。

私は本当にpyfuzzyの例のパフォーマンスを測定していないが、FFLLがないように、新しいバージョン0.1.0としてFCLファイルを読み込むことができません。ただ、この形式でファジーシステムを説明し、いくつかのラッパーを書き、そして両方のバリアントのパフォーマンスをチェックします。

pyfuzzyでFCLを読み取るためのあなたはANTLRのPythonのランタイムが必要ですが、読んだ後、あなたがターゲットにANTLRのオーバーヘッドを必要としないので、読み取りオブジェクトをpickle化することができる必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top