Minha situação
Estou escrevendo um artigo apresentando um módulo de software que desenvolvi e quero comparar seu tempo de execução com outros módulos para a mesma tarefa. Estou ciente das desvantagens dos experimentos em tempo de execução , mas suponha que, no meu caso, não há maneira de contornar isso. (Eu posso deduzir algumas propriedades teoricamente, mas isso não é suficiente para tudo.)
Os cenários específicos que quero usar para o benchmarking têm dois parâmetros: a complexidade do problema e uma semente r aleatória que determina o problema detalhado. Principalmente, quero mostrar a dependência de n . Passando por investigações e teorias preliminares, a influência de r no tempo de execução é menor ou desprezível. Uma única tarefa leva no máximo dez minutos para ser concluída.
Pergunta real
Estou procurando algum procedimento comumente aceito ou publicado para realizar essas experiências ou pelo menos uma lista de armadilhas comuns (idealmente publicadas).
O que eu encontrei até agora
Nada. As pesquisas na Internet exibem todos os tipos de resultados não relacionados, mas talvez eu não esteja usando a terminologia correta. Incluir a palavra-chave minimum, que eu sei ser um bom padrão (veja abaixo), também não ajudou.
Como eu faria isso
Execute todos os experimentos na mesma máquina com software potencialmente interferente, como uma GUI desativada, na medida do possível.
Sujeite todos os módulos à mesma seleção de cenários, ou seja, os mesmos e r .
Para cada cenário, teste os diferentes módulos diretamente um após o outro em ordem aleatória. Com outras palavras, o loop sobre os diferentes módulos é o mais interno. Isso deve evitar distorções nos diferentes módulos devido a flutuações lentas do desempenho da máquina (por exemplo, devido a mudanças de temperatura). A ordem aleatória deve evitar distorções através de efeitos como armazenamento em cache ou um módulo sempre sendo testado após o mesmo.
Respostas:
"Um guia para algoritmos experimentais", de CC McGeoch, é uma boa referência para
fonte
Além do tempo decorrido para cada execução, relate segundos do modo de usuário e sistema e total de pacotes IP e E / S total de disco, apenas para verificar se alguns números são consistentemente "baixos" e têm impacto insignificante no tempo decorrido.
Em https://wiki.freebsd.org/BenchmarkAdvice PHK e outros, oferecem bons conselhos, incluindo
fonte