Created
March 16, 2015 18:18
-
-
Save chappjc/a0f0634a5be68df0252c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% benchmark code for RLD solutions posted at http://stackoverflow.com/q/1975772/2778484 | |
% Results posted in CW: http://stackoverflow.com/a/29084077/2778484 | |
%% bench | |
datasizes = [reshape(linspace(10,70,4).'*10.^(0:4),1,[]) 10^6 2*10^6]; %//' | |
fcns = {'repelem','rld_cumsum','rld_cumsum_diff'}; %// approaches to be benchmarked | |
tsec = zeros(numel(fcns),numel(datasizes)); | |
for k1 = 1:numel(datasizes), | |
n = datasizes(k1); %// Create random inputs | |
fprintf('Data size: %d\n',n); | |
vals = randi(200,1,n); | |
runs = [5000 randi(200,1,n-1)]; %// 5000 acts as an aberration | |
for k2 = 1:numel(fcns), %// Time approaches | |
tsec(k2,k1) = timeit(@() feval(fcns{k2}, vals,runs), 1); | |
fprintf('\tFunction: %s (%3.2f sec)\n',fcns{k2},tsec(k2,k1)); | |
end | |
end | |
%% plot | |
figure, %// Plot runtimes | |
loglog(datasizes,tsec(1,:),'-rx'), hold on | |
loglog(datasizes,tsec(2,:),'-bo') | |
loglog(datasizes,tsec(3,:),'-k+') | |
set(gca,'xgrid','on'),set(gca,'ygrid','on'), | |
xlabel('Datasize (# elements)'), ylabel('Runtime (s)') | |
legend(upper(strrep(fcns,'_',' '))),title('Runtime') | |
%% rate plot | |
elementsPerSec = bsxfun(@rdivide,datasizes,tsec); | |
figure; | |
semilogx(datasizes,elementsPerSec(1,:),'-rx'), hold on | |
semilogx(datasizes,elementsPerSec(2,:),'-bo') | |
semilogx(datasizes,elementsPerSec(3,:),'-k+') | |
set(gca,'xgrid','on'),set(gca,'ygrid','on'), | |
xlabel('Datasize (# elements)'), ylabel('Processing rate (elements/sec)') | |
legend(upper(strrep(fcns,'_',' '))),title('Rate') | |
%% plot speedup | |
figure, %// Plot speedups | |
semilogx(datasizes,tsec(1,:)./tsec(2,:),'-rx') | |
set(gca,'ygrid','on'), xlabel('Datasize ->') | |
legend('Speedup(x) with cumsum+diff over cumsum-only'),title('Speedup Plot') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment