Why is str2double so slow in matlab as compared to a mex-function?

后端 未结 2 1858
既然无缘
既然无缘 2021-01-15 07:00

my question is the title.

  1. Why is str2double so slow in matlab as compared to a mex function made in C/C++? Does matlab just not have good string handling c

2条回答
  •  渐次进展
    2021-01-15 07:39

    1) str2double is a pretty complex function that can convert many different formats. I guess that your mex implementation is much simpler and that can explain why it's faster. Som examples are provided in matlab help:

       str2double('123.45e7')
       str2double('123 + 45i')
       str2double('3.14159')
       str2double('2.7i - 3.14')
       str2double({'2.71' '3.1415'})
       str2double('1,200.34')
    

    2) why mex are faster? Because when you execute a standard m-file script, basically there is a program that will read your program an execute it (an interpreter). So there are two layers. However, when you write a mex-file, you compile it directly in the CPU language, such that it can be run directly by the processor. There is only one layer, so it's faster. For more details, see the wikipedia article:

    http://en.wikipedia.org/wiki/Interpreted_language

    http://en.wikipedia.org/wiki/Compiled_language

    3) You cannot see the code of str2double because it is compiled. Matworks does not provide the code of this function. You can execute it, but not read it. This is the same for all built-in functions.

提交回复
热议问题