public Result runBenchmarkClass(String name, int benchmarkRuns, int warmUpIterations, int measureIterartions, int initRuns) {
		instantiateClass();
		Result result = new Result(name, benchmarkRuns);

		System.out.println("starting initial warm-up phase");

		for (Method m : benchmarks) {
			System.out.println("starting warm-up phase for benchmark " + m.getName());
			doWarmUp(warmUpIterations, m);
		}

		System.out.println("--- warm up is over " + initRuns + " test runs are started now...");

		for (int i = 0; i < initRuns; i++) {
			System.out.println("Starting test run " + i);
			for (Method m : benchmarks) {
				measure(measureIterartions, m, true);
			}
		}

		System.out.println("--- test runs over " + benchmarkRuns + " measurement runs are started now...");

		for (int i = 0; i < benchmarkRuns; i++) {
			System.out.println("Starting run " + i);

			for (Method m : benchmarks) {

				System.out.println("starting measurement of " + m.getName());

				double[] results = measure(measureIterartions, m);

				result.set(i, m.getName(), results);

			}

		}

		return result;
	}