首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从c++移植到c# unity 3d的脚本速度很慢

从c++移植到c# unity 3d的脚本速度很慢
EN

Stack Overflow用户
提问于 2015-12-06 20:22:18
回答 2查看 183关注 0票数 1

我想在unity脚本中使用以下算法(这是一个在3d空间中可视化图形的应用程序):

https://github.com/godlikemouse/ForceDirectedLayout/blob/master/src/layout.cc

现在,当我在c++中运行上面提到的代码时,大约需要5-10秒来完成它的迭代。我已经将整个代码移植到unity c#脚本中,它需要大约20分钟才能完全运行。我真的不知道为什么会发生这种情况,也不知道从哪里开始寻找。如果有人能为我指引正确的方向,我将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2015-12-09 06:39:15

我预计会有一些减速,但最多也就几秒钟。如果需要20分钟,那么端口就有问题。

几个可能的候选者:

  1. 您正在向控制台输出大量信息,这会显著减慢速度,因此除非需要,否则不要执行此操作。
  2. 您正在不必要地创建需要收集的对象和/或垃圾。

也许最好的做法是在执行代码的同时使用Unity Profiler。它会让你知道时间都花在哪里了。您可以通过插入自己的示例来增强信息:http://docs.unity3d.com/ScriptReference/Profiler.BeginSample.html

票数 0
EN

Stack Overflow用户

发布于 2016-11-04 15:36:40

我发现我的C#代码在Unity中运行也很慢。我认为这是由于运行时环境/版本和可能的编译器优化没有进行。也许也会有很多开销。

确保在构建并运行编译的Unity项目之后测试性能。在我的测试中,从编辑器启动后运行Unity C#脚本,与构建和运行可执行文件相比,运行速度大约是13%。

但即便如此,进一步的测试表明,在编译后的项目中运行的C#的运行速度仅为在控制台应用程序中运行相同代码的50%。

请看这个答案:https://codereview.stackexchange.com/a/146100/121804

我没有深入研究你的链接算法在做什么,但为了帮助加快速度:如果可能,将这些除法转换为乘法,找到一种不使用sqrt的方法,通过将节点存储在哈希图(字典)中,可以大大加快findNode(id)函数的速度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34117348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档