3


0

私はたくさんのチャートを使用するWindowsアプリケーションをやっています。 その実質的にデータビューアです。 Matlabを使い始めたのは、簡単だからですが、遅すぎることに気付きました。 私は別の言語に変えたいと思いました。 誰かが私にVisual CかJavaを勧めた。 確信はないけど。 どの言語を使うべきですか?

11 Answer


11


私の意見では、別の「より速い」言語に移行することによる速度の向上は、アルゴリズムの改良ほどではありません。

MATLABの「問題」は、行列を狭いループでサイズ変更するなど、いくつかの厄介なことを実行できることです。 次のコマンドを使用して、ボトルネックを正確に特定するようにしてください。

のプロフィール... プロファイルレポートからプログラムプロファイルを実行する

これは、どの関数の実行にどのくらいの時間がかかるのか、どの行が最大のボトルネックとなるのかについての優れた情報を提供します。 また、関数が何回呼び出され、M-Lintコードチェックレポートが含まれるかを確認することもできます。

これらの測定とヒントは、あなたのアルゴリズムのボトルネックをあなたに示すことができます。 あなたの確信が賢いアルゴリズムを使って関数のコールカウント/スピードを減らす方法がないならば。 スマートベクトルが十分に大きくなるような大きな2次元行列が本当に必要なのでしょうか、またはアーティファクトが見つかった場合でも、なぜアーティファクトを検索し続けるのでしょうか。 あなたが最もパフォーマンスの問題を経験している関数をc / cで書き、それをmatlabの関数として使うことができます。 どの関数をc / cで実装するかを正しく選択することで、大きなスピードアップを得ることができます。 MATLABからac / c関数を呼び出すことには多少のオーバーヘッドがあります。より正確には、MATLABからデータを取得するためにc / cにオーバーヘッドがあるため、10000回呼び出される関数はcで実装するのが最善ではありません。 / c、コールスタックの上の方に機能が高いほうがよいでしょう。


3


要件によって異なります。

matlabを使用する利点は、数値計算に強いということです。 あなたがそれを必要としないならば、それからmatlabを使用することに利点はありません。 この場合、これらの言語はすべて問題ありません。他の多くの言語(Python、C#、…​)も同様です。 それはあなたがどの言語に最も快適でいるかによって異なります。

もしあなたが* matlabの利点を欲しているなら*

  1. matlabで最適化してみてください。 ほとんどの最適化手法は言語に依存しません。

  2. matlabをCに自動的に変換するためのツールがあります。 その後、すべての最適化をオンにしてコンパイルしてみることができます。 しかし、特にGUI部分を考えると、これが大いに役立つことを私は真剣に疑います。


3


まず第一に、他の答えが述べたように、ボトルネックがどこにあるか見つけるためにあなたのコードをプロファイルする必要があります。 Doug Hullのブログ(The MathWorks)、特にhttp://blogs.mathworks.com/videos/2009/04/17/speeding-up-dougs-をチェックしてくださいsolution-with-the-profiler / [プロファイラの使い方に関するこのエントリ]。 これは、コード内のすべての作業がどこで行われているのかを確認するのに役立ちます。

スローダウンの原因がデータ処理に関連している場合は、処理速度を速める方法(ベクトル化、mexファイルの書き込みなど)がいくつかあります。

減速の原因があなたのGUIであるなら、これは解決するのがさらに簡単かもしれません。 Dougと その他のMathWorkersの両方から、多数のブログ記事があります。それらについては、GUIデザインに関するものです。 それを扱うSOに関するいくつかの質問もありました( ここのもの)。 非常に大きなデータセットを表示する場合は、The MathWorks File Exchangeの Jiro Dokeによるこの投稿を参考にしてください。

GUIの設計方法がわからないため、より具体的なアドバイスをするのは困難ですが、それがデータ表示のボトルネックになると判明した場合は、速度を向上させるためのリソースがたくさんあります。他の言語に切り替えるのは面倒です。


2


Matlabから呼び出すことができるCで関数を作成できることを忘れないでください。 そしてTADA、あなたは両方の環境にアクセスすることができます!


1


私はC#を使うでしょう。 Cよりも簡単で、Windowsプラットフォームとうまく統合できます。 そのための無料のグラフ作成ライブラリーを見つけるだけで、問題ありません。

言語の好みに応じて他にもたくさんのオプションがあります。 例えば。 PythonまたはCでQt。


1


私の知る限りでは、最も一般的な方法論はMatlabで概念実証または主なアルゴリズムのみを最初に行うことです。使いやすさと数学計算の利便性から、それを「実際の」プログラミングに変換するためです。パフォーマンスを向上させるために言語。 通常、CまたはCは「本物の」言語として機能しますが、あなたの場合は、Windowsアプリケーションを実行することを目的とした、おそらくC#が最善の選択肢となるでしょう。


1


アプリケーションがもっと複​​雑になると、MATLABのGUIプログラミングは非常に厄介になることがわかりました。 BTW MATLABは、Javaからも簡単に呼び出すことができます(そして逆に、現在のバージョンは基本的に対話型のJavaコンソールを提供します)。


1


ちなみに、それでもMatlabの数学力が必要な場合は、http://www.scilab.org [Scilab]をチェックしてください。 オープンソースで無料です。他のC#やCと統合する方法の例があります。 Scilabがバックグラウンドで実行されているプロジェクトを作成して、すべてのデータ数学操作を実行しました。そしてそれらをC#の ZedGraphライブラリで表示します。 魔法のように働いた!


1


JavaとJFreeChart(http://www.jfree.org/jfreechart/)ライブラリを使用することをお勧めします。 私は、非常に簡単で(そして速く)開発されているアプリケーションを、類型の異なるチャートでたくさん見つけました。 特に速いパフォーマンスを必要としないのであれば、Javaを使うことができます。 私はC#のための同様のライブラリがあると思いますが、私はよくわかりません。


0


まず第一に、Visual Cは言語ではないアプリケーションを開発するためのIDEです。

第二…​ あなたはどの言語を知っていますか? いくつかの選択肢があります。 見てください:

  • C Qt(私の好みのオプション、強力で理解しやすい)

  • C#.NETまたはWPF

  • Java

より多くの情報を伝えることができれば私達はあなたのニーズに合った言語を見つけることができます。