function [output1] = benchmark(data, step, baseLearner, isDependent, attrMeasure)
    acc1 = zeros(step,1);
    err1 = zeros(step,1);
    est_err1 = zeros(step,1);
    cycle1 = zeros(step,1);
    
%     acc2 = zeros(step,1);
%     err2 = zeros(step,1);
%     est_err2 = zeros(step,1);    
%     cycle2 = zeros(step,1);
%     cycle3 = zeros(step,1);

    X = table2array(data(:,1:end-1));
    Y = categorical(data.Class);
    
    if (strcmp(attrMeasure, 'relief'))
        [ranked, ~] = relieff( X, Y, 1 );
    elseif (strcmp(attrMeasure, 'shannon'))
        [gains, attorder] = computegains(data(:,1:end-1), data{:,end});
        A = sortrows([gains attorder]);
        ranked = flip(A(:,2));
    else
        return;
    end

    for i=1 : step
        %fprintf('(%d)\n',i);
        %[output1, output2, eMin1, eMin2, lastValue1, lastValue2, lastValue3] = VIBES(X, Y, ranked, baseLearner, 10, isDependent);
        [output1, eMin1, lastValue1] = VIBES(X, Y, ranked, baseLearner, 10, isDependent);
        acc1(i) = output1.CCI*100/output1.NOI;
        err1(i) = output1.ICI*100/output1.NOI;
        est_err1(i) = eMin1;
        cycle1(i) = lastValue1;
        
%         acc2(i) = output2.CCI*100/output2.NOI;
%         err2(i) = output2.ICI*100/output2.NOI;
%         est_err2(i) = eMin2;   
%         cycle2(i) = lastValue2;
%         cycle3(i) = lastValue3;
    end

%     fprintf('%2.4f   %2.4f   %2.4f   %2.4f   %2.4f   %2.4f   %2.4f   %2.4f   %2.4f\n', mean(acc1), mean(err1), mean(est_err1), mean(cycle1),...
%         mean(acc2), mean(err2), mean(est_err2),  mean(cycle2),  mean(cycle3));
%     fprintf('%2.4f   %2.4f   %2.4f   %2.4f   %2.4f   %2.4f   %2.4f   %2.4f   %2.4f\n\n', std(acc1), std(err1), std(est_err1), std(cycle1),...
%         std(acc2), std(err2), std(est_err2),  std(cycle2),  std(cycle3));

    fprintf('%2.4f   %2.4f   %2.4f   %2.4f\n', mean(acc1), mean(err1), mean(est_err1), mean(cycle1));
    fprintf('%2.4f   %2.4f   %2.4f   %2.4f\n', std(acc1), std(err1), std(est_err1), std(cycle1));
end