-14

私はプログラマーではないとすぐに言いましょう。私はそれを実現するために彼の最初の一歩を踏み出すという考えを持ったただの男です。私はプログラミングに不慣れではありませんが、ここでの概念と用語のいくつかは私の頭をはるかに超えています。したがって、この質問が以前に回答された場合は、事前に謝罪します(つまり、PythonプログラムをC / C ++コードに変換しますか?)。

電話からクラウドコンピューティングを介して送信された音楽データを分析するための単純なAIネットワークを作成するというアイデアがあります(私はクラウド関連の人を雇いました)。それは多くのメモリを必要とし、ハードな数値計算のために高速である必要があります。私はPythonでそれを行うことを計画していましたが、それはそれほど良い考えではないかもしれないことを学びました(PythonはC ++よりも高速で軽量ですか?)。

私がホルスターに持っている銃はPythonだけなので、PythonからC++へのコンバーターを使用することを考えていました。しかし、価格がなければ何も起こりません。

  1. これは私のコードを高速に保つための有利な方法ですか?
  2. コンバーターを使用するためのギブアンドテイクは何ですか?
  3. 私は何かが足りませんか?私はまだこれに慣れていないので、どのような質問をするべきかさえわかりません。

前もって感謝します。

4

4 に答える 4

14

一般的に、それはコードを書くためのひどい方法であり、それがこれ以上速くなることを保証するものではありません。ある言語では単純で高速なものは、別の言語では複雑で低速になる可能性があります。翻訳者と戦い、生成されたコードを適切に実行する方法を理解するよりも、高速なPythonコードの記述方法を学ぶか、C++を直接学ぶ方がよいでしょう。

于 2012-09-10T01:36:35.157 に答える
2

C ++が必要な場合は、C++を使用してください。ただし、PyPyには、Cよりもはるかに高速である可能性があることを示す多数のベンチマークがあることに注意してください。コンパイルされた拡張機能を使用するNumPyを使用すると、数値作業がはるかに高速で簡単になります。

静的にコンパイルされたもので、Pythonに少し似たものでプログラミングしたい場合は、RPythonがあります。

最後に、NumPyが行うことを実行できます。プロファイリングでホットスポットが表示されるため、またはプロファイリングで何かをより簡単に実行するための拡張機能が必要なため、計算量の多いリフティングのほとんどにCまたはC++で記述された拡張機能を使用します。 Pythonの内部。これにより、コードが特定の実装に関連付けられることに注意してください。

于 2012-09-10T01:41:47.617 に答える
1

すでに述べたのと同様に、C ++は、一部の領域では高速で、他の領域では低速である可能性があります。Pythonはまったく同じです。最終的には、どの言語も機械語に変換されます。実行方法を知っているのと同じくらい効率的にするのは、最終的にはコンパイラー次第です。とは言うものの、1つの言語を選択し、必要なことを実行するための高速で効率的なコードの記述方法を学ぶことをお勧めします。

于 2012-09-10T01:41:34.127 に答える
0

いいえ。優れたC++パフォーマンスの重要な部分は、パフォーマンスの高いアーキテクチャを選択する可能性に由来するためです。それは「Cだから」という同じ事実から魔法のように生まれるものではありません。

PythonからC++への単純な行ごとの変換では、Cythonのようなものを使用する以上にパフォーマンスが向上する可能性は低いため、Cythonを使用する方が合理的だと思います。それでも、優れた開発者がC++を最初から使用するよりもはるかに悪い場合があります。C ++は、必要最小限の長さのデータ型を定義する可能性、スタック上の固定サイズの配列、本番環境での配列境界チェックをオフにするなど、すべてをより細かく制御できるようにします。

于 2020-08-23T11:10:26.250 に答える