【问题标题】:Is matlab mex function or a shared object/DLL faster?matlab mex 函数或共享对象/DLL 更快吗?
【发布时间】:2011-12-13 08:26:18
【问题描述】:

我必须在 matlab 中进行一些计算。它已经在一个 m 文件中实现,但运行速度很慢,因为有很多循环。这个想法是编译本机代码并在 matlab 中使用此代码。

现在我有两种可能:

  • 编写动态加载到 matlab 中的共享对象(.so od .dll 文件)
  • 编写一个 C(++)-MEX 函数

在第一种情况下,matlab 为本地数据类型等提供接口,在后一种情况下,我必须自己做。现在的问题是:什么是更快/更好?我可以两者都做,但我想获得尽可能快的速度。

谢谢

【问题讨论】:

  • 除非您只在外部代码中进行少量计算,否则性能应该没有差异。使用更适合手头任务的。

标签: performance matlab mex


【解决方案1】:

我认为,使用 MEX 文件时,加载时间和函数调用开销通常会略有改善,但如果调用次数相对于执行的计算而言较低,则性能的整体差异可能没那么好。

但是,使用 MEX 文件可能会导致代码更加透明、可读和可维护,因为该函数看起来就像是一个原生 MATLAB 命令。我认为除非性能是最重要的要求,否则这种考虑至少与速度一样重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2011-07-24
    相关资源
    最近更新 更多