【问题标题】:Matlab Builder NEMatlab 生成器 NE
【发布时间】:2013-02-06 06:56:14
【问题描述】:

我将一个项目部署到 .NET 程序集文件中。 一个主函数文件(.m 文件)被拖入 Classes 部分。 三个帮助文件被拖入 Shared Resources 部分。

在设置下,所有工具箱路径都被选中。在我的主要功能中,我只使用了来自 Neural Toolbox 的norc。当我构建程序集文件时,它最终为 12mb。

在我的主WPF项目中引用它后,加载时间难以忍受,每次进行一些计算大约需要10s来计算。

当我在 Matlab 中运行该函数时,只需不到 2 秒。

总之,我目前面临两个问题:1.) 大型 .NET 程序集文件和 2.) 严重的性能下降。

我正在使用 Win7 和 Matlab 2012b。有没有人遇到过这样的问题并解决了?

【问题讨论】:

  • 你的四个文件和它们使用的文件有多大?你真的需要手动添加帮助文件吗,也许它们现在是双倍的?我不认为检查工具箱有什么不同,因为我总是检查所有的东西,而且 dll 从来没有这么大。关于性能:您能否检查两种情况下的 cpu 使用量是否相同,是否都在本地驱动器上使用?
  • 我的文件只有 40kbytes。我记得以前版本的 Matlab 检查了所有工具箱,.dll 只有 47kb

标签: wpf performance matlab .net-assembly


【解决方案1】:

是否选择工具箱可能会对最终尺寸产生很大影响,尤其是在您拥有大量工具箱的情况下。依赖项检查器不能总是准确地确定您的代码调用了哪些函数(它可能依赖于运行时的许多事情),因此它包含了代码可以调用的相当多的事情。取消选中您知道不使用的不必要的工具箱可以减少它包含的东西的数量,有时会非常显着。

然而,它可能仍然需要包含很多东西,而且它可能只是很大。

当您的 .NET 代码调用从 MATLAB 部署的 .NET 程序集时,它需要启动 MCR,这可能需要相当长的时间(几乎与 MATLAB 本身一样长),然后执行所需的任何操作。如果您可以在调用之间以某种方式保持引用组件的变量处于活动状态,那么您只会获得一次启动成本。

【讨论】:

  • 保持引用组件的变量处于活动状态?我曾经引用过 Matlab 对象。我只有在函数调用中才有 MWArray 对象,并且该函数调用每秒获取一次。你指的是这个问题吗?
  • 谢谢!我根据您的建议对问题进行了排序。
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
相关资源
最近更新 更多