Observe que qualquer resposta a essa pergunta dependerá do que exatamente o sistema está fazendo a qualquer momento. Por exemplo:
- Qual programador de kernel você está usando (suas latências diferem)
- Quais processos você está executando (todos competem por tempo, e o agendador pode não escolher seus processos o quanto quiser)
E provavelmente mil outras coisas. Por esse motivo, execute este teste você mesmo . Observe também que o seguinte pode estar errado de muitas maneiras sutis, já que eu não sou muito qualificado para obter o melhor desempenho possível de bash
(bem, zsh
estritamente falando, já que esse é meu shell de login).
Com isso em mente, criei uma maneira simples de testar isso. A data do GNU tem uma maneira de mostrar nanossegundos (sim, você leu corretamente). Assim, para obter um monte de dados, tudo o que você precisa fazer é:
get_starting_diff() {
date +%N & date +%N
}
# 5,000 iterations is probably good enough statistically
for iteration in $(seq 1 5000); do
get_starting_diff
done > times
Isto irá (além de mastigar muito de PIDs) produzir 10.000 arquivos de linha, com a informação de tempo nela contida. Você pode usar o seguinte script do Python (v3.4) para ter uma ideia de qual é a diferença média de tempo:
def pairwise(iterator):
"Takes an iterator and extracts sequential pairs from it"
pair = []
for item in iterator:
pair.append(item)
if len(pair) == 2:
yield pair
pair = []
diffs = []
with open('times') as data:
for start1, start2 in pairwise(data):
diffs.append(int(start2) - int(start1))
diffs.sort()
median = diffs[len(diffs) // 2]
mean = sum(diffs) / len(diffs)
print("The median difference is", median / 1000000, "milliseconds")
print("The mean difference is", mean / 1000000, "milliseconds")
No meu sistema (Ubuntu 13.10, Linux 3.12.0-997-genérico), isso me dá:
The median difference is 1.077483 milliseconds
The mean difference is 3.680928442211055 milliseconds