Hirdetés

Új hozzászólás Aktív témák

  • disy68
    aktív tag

    Sziasztok!

    Néhány algoritmusnak kéne lemernem a tényleges futási idejét. Ehhez szeretnek egy olyan metódust csinálni ami paraméterként elfogad egy másik metódust(az algoritmust) es annak visszaadja a runtimet.
    Tudom több megoldas is van a neten rá, de nekem kicsit zavarosak.Legegyszerűbben hogyan tudnám kivitelezni hogy működjön a counter metódusom alább?

    class SorterTest {

    public static void main(String[] args) {

    long l = counter(Sorter.quicksort(a));



    }

    public static long counter(Method method){

    long startTime = System.currentTimeMillis();

    method();

    long stopTime = System.currentTimeMillis();

    return stopTime - startTime;


    }



    }

    Java 8 alatt van lehetőség metódus referenciát átadni. Akár az alábbihoz hasonlóan is elindulhatsz:
    public class MethodRuntimeChecker {

    public static void main(String[] args) {
    QuickSorter sorter = new QuickSorter();

    int[] array = getNumbers(10_000);

    System.out.println(mesureRunTimeNano(sorter::sort, array) + " ns");
    System.out.println(mesureRunTimeMilli(sorter::sort, array) + " ms");
    }

    public static long mesureRunTimeNano(Function<int[], int[]> intSorter, int[] toBeSorted) {
    long start = System.nanoTime();
    intSorter.apply(toBeSorted);
    return System.nanoTime() - start;
    }

    public static long mesureRunTimeMilli(Function<int[], int[]> intSorter, int[] toBeSorted) {
    long start = System.currentTimeMillis();
    intSorter.apply(toBeSorted);
    return System.currentTimeMillis() - start;
    }

    private static int[] getNumbers(int count) {
    int[] numbers = new int[count];
    Random random = new Random();
    for (int i = 0; i < count; i++) {
    numbers[i] = random.nextInt(count);
    }
    return numbers;
    }
    }

Új hozzászólás Aktív témák