我想在unity脚本中使用以下算法(这是一个在3d空间中可视化图形的应用程序):
https://github.com/godlikemouse/ForceDirectedLayout/blob/master/src/layout.cc
现在,当我在c++中运行上面提到的代码时,大约需要5-10秒来完成它的迭代。我已经将整个代码移植到unity c#脚本中,它需要大约20分钟才能完全运行。我真的不知道为什么会发生这种情况,也不知道从哪里开始寻找。如果有人能为我指引正确的方向,我将不胜感激。
发布于 2015-12-09 06:39:15
我预计会有一些减速,但最多也就几秒钟。如果需要20分钟,那么端口就有问题。
几个可能的候选者:
也许最好的做法是在执行代码的同时使用Unity Profiler。它会让你知道时间都花在哪里了。您可以通过插入自己的示例来增强信息:http://docs.unity3d.com/ScriptReference/Profiler.BeginSample.html
发布于 2016-11-04 15:36:40
我发现我的C#代码在Unity中运行也很慢。我认为这是由于运行时环境/版本和可能的编译器优化没有进行。也许也会有很多开销。
确保在构建并运行编译的Unity项目之后测试性能。在我的测试中,从编辑器启动后运行Unity C#脚本,与构建和运行可执行文件相比,运行速度大约是13%。
但即便如此,进一步的测试表明,在编译后的项目中运行的C#的运行速度仅为在控制台应用程序中运行相同代码的50%。
请看这个答案:https://codereview.stackexchange.com/a/146100/121804
我没有深入研究你的链接算法在做什么,但为了帮助加快速度:如果可能,将这些除法转换为乘法,找到一种不使用sqrt的方法,通过将节点存储在哈希图(字典)中,可以大大加快findNode(id)函数的速度。
https://stackoverflow.com/questions/34117348
复制相似问题