Imprimir alguns bytes não é a parte difícil. A parte difícil é encontrar quais bytes devem ser impressos. Para fazer isso, lsb_release
precisa analisar muitos arquivos do sistema. Você pode ver onde está gastando tempo em E / S rastreando suas chamadas de sistema:
strace -f -tt -T -o lsb_release.strace lsb_release
Na minha máquina, cerca de 1/3 do tempo é gasto executando o comando
dpkg-query -f '${Version} ${Provides}\n' -W lsb-core lsb-cxx lsb-graphics lsb-desktop lsb-languages lsb-multimedia lsb-printing lsb-security
que analisa o banco de dados de pacotes instalados. Não há outro consumidor significativo de E / S.
Como este é um script Python, você também pode usar o profiler do Python para ter uma ideia de onde está gastando tempo:
python -m cProfile
Isso não é muito revelador para mim, o maior momento em que os consumidores estão relacionados à inicialização do script (ele usa algumas bibliotecas) e à invocação do subprocesso dpkg
.