Скрипт для определения среднего времени выполнения программы - PullRequest
0 голосов
/ 13 мая 2011

Я нашел частичные решения на нескольких сайтах, поэтому я собрал несколько частей вместе, но я все еще не мог понять это.

Вот что я делаю:

Я бегупростая java-программа из терминала, и нужно найти среднее время выполнения программы.

Я выполняю команду несколько раз, нахожу общее время, а затем делю это общее время на числораз я запускал программу.

Я также хотел бы получить выходные данные программы, а не отображать их на стандартном выходе.

Вот мой текущий код и выходные данные.

Сценарий оболочки:

   startTime=$(date +%s%N)
   for ((i = 0; i <  $runTimes; i++))
   do
            java Program test.txt > /dev/null
   done
   endTime=$(date +%s%N)
   timeDiff=$(( $endTime - $startTime ))
   timeAvg=$(( $timeDiff / $numTimes ))
   echo "Avg Time Taken: "
   echo $timeAvg

Вывод:

 ./run: line 12: 1305249784N: value too great for base (error token is "1305249784N")

Строка № 12 отключена, поскольку этот код является частью файла большего размера.Строка № 12 - это строка с timeDiff, которая оценивается.

Я ценю любую помощь и приношу извинения, если этот вопрос излишний или не по теме.

1 Ответ

1 голос
/ 13 мая 2011

На моей машине я не вижу, что дает вам формат %N для даты, так как значение кажется равным 7 нулям, НО это делает намного большее число для вычисления в математике, то есть 1305250833570000000.Вам действительно нужна нано-секундная точность?Бьюсь об заклад, если вы просто наберете %s, все будет в порядке.

В противном случае вы будете на правильном пути.

PS

Ах да, минорточка,

 echo "Avg Time Taken:  $timeAvg" 

Это более простой способ добиться требуемого результата; -)

Вариант 2. Вы можете взять все вычисления даты вместе и превратить ваш цикл в небольшой скрипт,Тогда вы можете использовать встроенную функцию оболочки

time myJavaTest.sh

. Она даст вам такие детали, как

real    0m0.049s
user    0m0.016s
sys     0m0.015s

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...