Это зафиксировало его для меня:
$ sudo apt-get install gconf-defaults-service
Запустите при помощи времени согласно предложению Jon Lin:
$ time ls test
test
real 0m0.004s
user 0m0.002s
sys 0m0.002s
Вы не говорите, на каком Unix Ваши сценарии работают, но strace на Linux, связка на Солярисе/AIX, и я думаю, что социалистическая коалиция на hp-ux позволила Вам узнать много о том, что делает процесс. Мне нравится-c опция strace получить хорошую сводку:
]$ strace -c ls
test
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
89.19 0.000998 998 1 execve
10.81 0.000121 121 1 write
0.00 0.000000 0 12 read
0.00 0.000000 0 93 79 open
0.00 0.000000 0 16 close
0.00 0.000000 0 2 1 access
0.00 0.000000 0 3 brk
0.00 0.000000 0 2 ioctl
0.00 0.000000 0 4 munmap
0.00 0.000000 0 1 uname
0.00 0.000000 0 6 mprotect
0.00 0.000000 0 2 rt_sigaction
0.00 0.000000 0 1 rt_sigprocmask
0.00 0.000000 0 1 getrlimit
0.00 0.000000 0 30 mmap2
0.00 0.000000 0 8 7 stat64
0.00 0.000000 0 13 fstat64
0.00 0.000000 0 2 getdents64
0.00 0.000000 0 1 fcntl64
0.00 0.000000 0 1 futex
0.00 0.000000 0 1 set_thread_area
0.00 0.000000 0 1 set_tid_address
0.00 0.000000 0 1 set_robust_list
0.00 0.000000 0 1 socket
0.00 0.000000 0 1 1 connect
------ ----------- ----------- --------- --------- ----------------
100.00 0.001119 205 88 total
Действительно также обратите внимание, что присоединение этих программ типа трассировки может замедлить программу несколько.
Проверьте time
команда. Можно использовать его для измерения времени, которое требуется для выполнения наряду с некоторой другой полезной информацией как то, где время проводится.
Это не является точно профильным, но можно проследить сценарий, когда это работает. Поместить set -xv
перед разделом Вы хотите проследить и set +xv
после раздела. set -x
включает xtrace, который покажет каждую строку, которая выполняется. set -v
включает подробный режим, который также покажет строки, которые могут иметь эффект, но не выполняются, такие как переменное присвоение.
Можно также добавить метку времени трассировке. Вам нужен эмулятор терминала, который может добавить метку времени к каждой строке; единственным, о котором я знаю, является RealTerm, который является Windows-программой, но это будет работать с Вином. Вы могли бы также смочь использовать grabserial
, хотя я не попробовал его кроме реальными последовательными портами. Можно узнать, какое последовательное устройство оболочка использует путем выполнения ps -p $$
(если это не делает, использовать man
узнать, как включать столбец TTY в Ваш ps
вывод).
Кроме того, посмотрите, что Производительность представляет инструменты для сценариев оболочки на Переполнении стека.
Поскольку я оказывался здесь как минимум дважды, я реализовал решение:
https://github.com/walles/shellprof
Он запускает ваш скрипт, прозрачно синхронизирует все напечатанные строки и в конце выводит список 10 первых строк, которые были на экране дольше всего:
~/s/shellprof (master|✔) $./shellprof./testcase.sh
quick
slow
quick
Timings for printed lines:
1.01s: slow
0.00s: <<<PROGRAM START>>>
0.00s: quick
0.00s: quick
~/s/shellprof (master|✔) $