我的问题是标题.
与使用C/C++制作的mex函数相比,为什么str2double在matlab中如此之慢?matlab没有良好的字符串处理能力吗?
任何人都可以给我一些事实上的理由,为什么一个mex函数运行这么多个数量级更快?我希望对这种差异进行运行时分析,但我没有任何具体的理由来自matlab的代码.
你能解释一下我如何打开文件并实际查看为内置的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.您还可以在代码上运行探查器,以查看函数的所在时间.
看看这个函数,我的猜测是它sscanf在循环中被调用了很慢的b/c .您发布的fileexchange链接中的一个评论者建议使用以下代码来利用sscanf矢量化:
d = reshape(sscanf(sprintf('%s#', c{:}), '%g#'), size(c));
Run Code Online (Sandbox Code Playgroud)
这实际上比str2double单元阵列快得多.
| 归档时间: |
|
| 查看次数: |
3779 次 |
| 最近记录: |