Java [1242]

Zapisz się
Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • naim

    Cześć wszystkim,

    mam mały problem:

    piszę wrappera do uruchamiania testów wydajnościowych napisanych w C przy pomocy javy.

    Generalnie program działa tak że wywołujemy go z parametrami int liczbaWatkow, int interwałCzasowy(milis.), String nazwaTestu

    i teraz tworzę w pętli odpowiednią liczbę wątków które zostały podane w parametrze i dochodze do momentu gdzie mam:

    Process pX = Runtime.getRuntime().exe c("nazwaTestu");

    da się to jakoś zoptymalizować?
    Byłbym wdzięczny za pomoc/ wskazówki czego szukać

    Pozdrawiam serdecznie,
    P.
  • Koziołek [brat Javowiec]

    hehehe stary problem pominięcia czasu odpalenia testu... Można to zrobić w ten sposób iż samo odpalenie przerzucisz do osobnego wątku, który zrobi taka sztukę:
    - odpali test
    - wywoła notify() do wątku z zegarem i poinformuje go o tym iż trzeba odpalić zegarek :)
  • owczi

    Ale CO zoptymalizować? Poza tym i tak testy nie będą wiarygodne bo dochodzi czas na wywołanie powłoki itp. Jeśli, daj Boże, działa to pod jakimś Unixem, to odpalaj Runtime.getRuntime().exec("/bi n/sh -c time [nazwa testu") i przejmij wyjście stdout tego polecenia a z niego odczytaj sobie realny czas wykonania. Nie wiem czy pod Windows istnieje odpowiednik komendy time, pewnie nie. W każdym razie time podaje czas wykonania danego procesu. Jeśli liczysz wydajność to rób to jak najbliżej bezpośredniego systemowego wywołania procesu.
    A jeszcze jedno, jak startujesz te wątki? W sensie czy masz to jakoś prawidłowo rozwiązane żeby startowały na raz? Pule wątków, grupy wątków albo jakiś worker z zatrzaskiem CountDownLatch? Bo rozumiem że mają startować na raz.
  • Koziołek [brat Javowiec]

    do testów wydajnościowych można też użyć JUNITa i JMP które zwrócą czas wykonania metody.

    Co do wątków. Można utworzyć albo ich pulę albo wątek odpalający test i kolejkę z wątkami "pomiarowymi"