我正在做一个使用大量图表的Windows应用程序,实际上是一个数据查看器。我一开始使用Matlab,因为它更容易,但我意识到它太慢了。我想换一种语言。有人推荐我使用Visual C++或Java。但我不确定该用哪种语言?
我正在做一个使用大量图表的Windows应用程序,实际上是一个数据查看器。我一开始使用Matlab,因为它更容易,但我意识到它太慢了。我想换一种语言。有人推荐我使用Visual C++或Java。但我不确定该用哪种语言?
我个人认为,采用另一种“更快”的语言所带来的速度提升并不如改进算法那样显著。
MATLAB 的“问题”在于它允许你做一些不好的事情,比如在紧密循环中调整矩阵的大小。你应该尝试使用以下命令来确定瓶颈所在:
profile on
... run your program
profile off
profile report
这会为您提供关于哪个函数需要多长时间才能执行和哪一行创建的最大瓶颈的有用信息。您还可以看到一个函数被调用的次数,并包括一个 M-Lint 代码检查报告。
这些测量和提示可以显示算法的瓶颈。如果确定没有办法使用更智能的算法来减少函数的调用次数/速度,例如,我是否真的需要那个大的二维矩阵,而一个更聪明的向量就足够了,或者如果我找到一个工件,为什么还要继续寻找工件。你可以在 c/c++ 中编写出现最多性能问题函数并将其用作 matlab 中的函数。通过正确选择在 c/c++ 中实现哪些函数,您可以获得巨大的加速效果。从 MATLAB 调用 c/c++ 函数存在一定的开销,或者更正确地说,在 c/c++ 中获取来自 MATLAB 的数据也存在开销,因此一个被调用 10000 次的函数不是最适合在 c/c++ 中实现的,您最好选择调用堆栈中更高层次的函数。
我会使用C#。它比C++更容易,并且与Windows平台集成得很好。只需找到一个免费的图形库,你就可以开始了。
根据您对语言的偏好,还有许多其他选项。例如,Qt与Python或C++。
我建议您使用Java和JFreeChart(http://www.jfree.org/jfreechart/)库。我发现使用这个库可以很容易(而且快速)地开发具有不同类型图表的应用程序。如果您不需要特别快的性能,可以使用Java。我想C#也有类似的库,但我不确定。