Aprendendo: os.clock()
A função os.clock() retorna o acúmulo
de tempo transcorrido dos comandos-lua.
1. O acúmulo de tempo não inclui
os EXTERNOS tempos de processamento, exemplo:
$ lua -e 'os.execute("sleep 2") print(os.clock())'
0.016143
$ lua -e 'os.execute("sleep 5") print(os.clock())'
0.014617
$ lua -e 'os.execute("sleep 10") print(os.clock())'
0.01477
2. O acúmulo de tempo abrange
o modo interativo INTEIRO, exemplo:
$ lua
Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio
> os.clock()
0.024139
> os.clock()
0.024963
> os.clock()
0.025756
> while os.clock()<3 do --[[vazio]] end print(os.clock())
3.0
> while os.clock()<3 do --[[vazio]] end print(os.clock())
3.001037
> while os.clock()<3 do --[[vazio]] end print(os.clock())
3.001892
> while os.clock()<3 do --[[vazio]] end print(os.clock())
3.003051
> os.clock()
3.005706
> os.clock()
3.00653
> os.clock()
3.007324
3. O acúmulo de tempo não inclui
a INATIVIDADE entre comandos interativos, exemplo:
$ lua
Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio
> print(os.clock(), os.date())
0.018798 Wed Mar 20 14:39:32 2019
> print(os.clock(), os.date())
0.020629 Wed Mar 20 14:39:42 2019
> print(os.clock(), os.date())
0.021484 Wed Mar 20 14:39:56 2019
Isso tudo quer dizer que fazer benchmark com os.clock()
refere-se ao que é executado pelo interpretador, apenas.
Não refere-se ao tempo total do script ou do interativo.
(meu erro foi achar que era o tempo-total)
(mas ajudaram-me: Denis, Tomás e Roberto)