Advertisement
amroamroamro

test branch prediction

Apr 17th, 2016
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.32 KB | None | 0 0
  1. function t = testBranchPrediction()
  2.     % data
  3.     data = randi(256, [32768 1]);
  4.     dataS = sort(data);
  5.    
  6.     % check results are equal
  7.     v = {
  8.         sum_conditional_if(data);
  9.         sum_conditional_if(dataS);
  10.         sum_conditional_continue(data);
  11.         sum_conditional_continue(dataS)
  12.     };
  13.     assert(isequal(v{:}));
  14.    
  15.     % time
  16.     t = zeros(4,2);
  17.     feature accel on
  18.     feature jit on
  19.     t(1) = timeit(@() sum_conditional_if(data));
  20.     t(2) = timeit(@() sum_conditional_if(dataS));
  21.     t(3) = timeit(@() sum_conditional_continue(data));
  22.     t(4) = timeit(@() sum_conditional_continue(dataS));
  23.     feature accel off
  24.     feature jit off
  25.     t(5) = timeit(@() sum_conditional_if(data));
  26.     t(6) = timeit(@() sum_conditional_if(dataS));
  27.     t(7) = timeit(@() sum_conditional_continue(data));
  28.     t(8) = timeit(@() sum_conditional_continue(dataS));
  29. end
  30.  
  31. function s = sum_conditional_if(data)
  32.     s = 0;
  33.     for i=1:1e2
  34.         for c=1:numel(data)
  35.             if data(c) >= 128
  36.                 s = s + data(c);
  37.             end
  38.         end
  39.     end
  40. end
  41.  
  42. function s = sum_conditional_continue(data)
  43.     s = 0;
  44.     for i=1:1e2
  45.         for c=1:numel(data)
  46.             if data(c) < 128
  47.                 continue;
  48.             end
  49.             s = s + data(c);
  50.         end
  51.     end
  52. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement