@@ -0,0 +1,2280 @@
+package ru.ifmo.nds.cli;%0A%0Aimport com.beust.jcommander.Parameter;%0Aimport com.beust.jcommander.validators.PositiveInteger;%0A%0Aimport ru.ifmo.nds.IdCollection;%0Aimport ru.ifmo.nds.NonDominatedSorting;%0Aimport ru.ifmo.nds.NonDominatedSortingFactory;%0Aimport ru.ifmo.nds.rundb.Dataset;%0A%0Apublic class RunOnTest extends JCommanderRunnable %7B%0A    @Parameter(names = %22--algorithmId%22,%0A            required = true,%0A            description = %22Specify the algorithm ID to benchmark.%22)%0A    private String algorithmId;%0A%0A    @Parameter(names = %22--datasetId%22,%0A            required = true,%0A            description = %22Specify the dataset ID to benchmark.%22)%0A    private String datasetId;%0A%0A    @Parameter(names = %22--times%22,%0A            required = true,%0A            description = %22Specify how many times to run.%22)%0A    private Integer times;%0A%0A    @Parameter(names = %22--max-rank%22,%0A            description = %22Specify maximum meaningful rank.%22,%0A            validateWith = PositiveInteger.class)%0A    private Integer maxRank;%0A%0A    @Override%0A    protected void run() throws CLIWrapperException %7B%0A        Dataset dataset;%0A        try %7B%0A            dataset = IdCollection.getDataset(datasetId);%0A        %7D catch (IllegalArgumentException ex) %7B%0A            throw new CLIWrapperException(%22Cannot find dataset '%22 + datasetId + %22'.%22, ex);%0A        %7D%0A        NonDominatedSortingFactory factory;%0A        try %7B%0A            factory = IdCollection.getNonDominatedSortingFactory(algorithmId);%0A        %7D catch (IllegalArgumentException ex) %7B%0A            throw new CLIWrapperException(%22Cannot find algorithm '%22 + algorithmId + %22'.%22, ex);%0A        %7D%0A%0A        NonDominatedSorting algorithm = factory.getInstance(dataset.getMaxNumberOfPoints(), dataset.getMaxDimension());%0A        int realMaxRank = maxRank == null ? dataset.getMaxNumberOfPoints() : maxRank;%0A%0A        for (int i = 0, limit = times; i %3C limit; ++i) %7B%0A            long t0 = System.nanoTime();%0A            int sumMaximumRanks = dataset.runAlgorithm(algorithm, realMaxRank);%0A            long timeNS = System.nanoTime() - t0;%0A            System.out.printf(%22Run #%25d: time %25.03g seconds, sum of ranks = %25d%25n%22, i + 1, timeNS * 1e-9, sumMaximumRanks);%0A        %7D%0A    %7D%0A%0A    public static void main(String%5B%5D args) %7B%0A        JCommanderRunnable.run(new RunOnTest(), args);%0A    %7D%0A%7D%0A

Add a simple RunOnTest executable.