我在Java中创建了简单的光线跟踪器,这是我的一个爱好项目,它很慢。虽然不是很慢,但还是很慢。我想知道我是否可以使用像C或C++这样的低级语言获得任何性能提升,或者差异可以忽略不计,我应该坚持改进“我的”算法?
发布于 2011-09-17 03:17:58
我认为这个问题的答案是肯定的,在99.99%的情况下,非解释型语言会比VM下的相同算法运行得更快。这就是说(我在java和c/c++的图像处理方面做了很多工作,内存和时间都很重要),我认为你应该首先尝试优化你的代码,以下是我的建议:
然后(我可以看到一些光线跟踪的例子):
将
现在这些都是“好的”,但如果速度对你来说真的很重要,我不会建议使用c或c++语言(即使你可以),但更有可能专注于OpenCL。这可能是可用的最好的工具,也是最适合构建光线跟踪引擎的工具。想象一下,您谈论的不是30%的改进,而是更可能的10000%(速度提高100倍)这是一个java接口:http://jogamp.org/jocl/www/好运:-)
发布于 2011-09-17 01:55:26
这要视情况而定。使用C/C++将允许您访问在Java中不能做的事情。(如SIMD)
换句话说,我会说是的,它通常可以在C/C++中做得更好,但这需要一些工作。首先进行所有的基本(数学/算法)优化。然后再进行微优化。
发布于 2011-09-17 22:19:33
AMD刚刚发布了一个名为Aparapi的开源项目,它可以在运行时将Java字节码转换为OpenCL。如果您的代码不能转换为OpenCL (有一些限制),或者如果您没有可用的OpenCL,那么代码将在线程池中运行。
可能最适合你的需要。
http://aparapi.googlecode.com
https://stackoverflow.com/questions/7448508
复制相似问题