gpt4 book ai didi

c++ - 与 mex 函数相比,为什么 str2double 在 matlab 中这么慢?

转载 作者:太空狗 更新时间:2023-10-29 23:37:18 25 4
gpt4 key购买 nike

我的问题是标题。

  1. 与用 C/C++ 制作的 mex 函数相比,为什么 str2double 在 matlab 中这么慢? matlab 只是没有很好的字符串处理能力吗?

  2. 关于为什么 mex 函数运行速度快这么多数量级,谁能给我一些事实原因?我希望对这种差异进行运行时分析,但我没有从 matlab 代码中得出任何具体原因。

  3. 您能否向我解释一下我将如何打开文件并实际查看为内置 matlab str2double 函数编写的代码?

关于该主题的一些帖子:

http://www.mathworks.com/matlabcentral/fileexchange/28893-fast-string-to-double-conversion

当发帖人试图解释此功能如何运行得更快时,我不明白他们的意思。例如,这是什么意思:(str2doubleq 是用 c++ 制作的 mex 函数)

“str2doubleq 利用 mex-gateway 来使用 c++ 快速字符串处理功能和 std::stringstream 属性。转换使用与 boost::lexical_cast 相同的想法”

没人能回答吗?

最佳答案

str2double 的实现不会对您隐藏。要查看它,请键入 edit str2doulbe.m。您还可以对代码运行探查器,以查看函数中的所有时间都花在了哪里。

查看该函数,我的猜测是它很慢 b/c sscanf 在循环内被调用。您发布的文件交换链接中的一位评论者建议使用以下代码来利用 sscanf 被矢量化:

d = reshape(sscanf(sprintf('%s#', c{:}), '%g#'), size(c));

对于元胞数组,这实际上比 str2double 快得多。

关于c++ - 与 mex 函数相比,为什么 str2double 在 matlab 中这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com