Mex and Matlab Code

조회 수: 2 (최근 30일)
d paul
d paul 2015년 4월 11일
댓글: Ryan Livingston 2015년 4월 27일
Using the Concept from
I have done :
function out = sum_it(a,b)
out = a + b;
>> codegen -args {2.0 3.0} sum_it.m
My Test Function :
ip1 = rand(100,1);
ip2 = rand(100,1);
for j = 1:20
tic()
for i = 1:len
Pa(i) = sum_it(ip1(i), ip2(i));
end
a(j) = toc();
tic()
for i = 1:len
Pb(i) = sum_it_mex(ip1(i), ip2(i));
end
b(j) = toc();
fprintf('%f %f\n',mean(a),mean(b))
end
Unfortunately a < b. How can it be so ??? I was expecting b <<< a by big margin ! What am I doing wrong?
0.004559 0.004008
0.002347 0.003053
0.001587 0.002737
0.001214 0.002609
0.000989 0.002450
0.000834 0.002305
0.000728 0.002175
0.000645 0.002064
0.000580 0.002015
0.000534 0.001983
0.000491 0.002014
0.000458 0.002048
0.000430 0.002079
0.000406 0.002092
0.000386 0.002094
0.000369 0.002105
0.000353 0.002124
0.000338 0.002144
0.000326 0.002146
0.000313 0.002114
  댓글 수: 1
Ryan Livingston
Ryan Livingston 2015년 4월 27일
Could you please format your code to make the question a bit easier to read?

댓글을 달려면 로그인하십시오.

답변 (1개)

Ryan Livingston
Ryan Livingston 2015년 4월 27일
Generally what is happening here, is that the body of sum_it calls a MATLAB built-in function plus. Such functions are already implemented in compiled code in MATLAB and generating code for them is not expected to accelerate them significantly. The documentation for acceleration describes this more under the heading Avoid Generating MEX Functions if Built-In MATLAB Functions Dominate Run Time.
The likely reason for the small slowdown is that calling a MEX function has some overhead. Because the body of sum_it is so simple, that overhead is dominating the small execution time.
If you have a larger application that you would like to accelerate, then I would suggest following the steps on that documentation page that describe using the profiler to identify the bottlenecks in your code. Once those are identified, then you can determine if they are good candidates for acceleration via MATLAB Coder and follow the steps described to generate code for those small portions.

카테고리

Help CenterFile Exchange에서 MATLAB Coder에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by