Para um cronograma eficaz dos programas, especialmente quando você estiver interessado em comparar soluções alternativas, você precisa de um controle! Uma boa maneira é colocar o procedimento que você está cronometrando em uma função. Chame a função dentro de um loop de temporização. Escreva um procedimento stub, basicamente retirando todo o código da sua função e retornando (mas deixe todos os argumentos). Coloque o esboço no seu loop de tempo e volte a cronometrar. Isso mede toda a sobrecarga associada ao tempo. Subtraia o tempo do stub do tempo do procedimento para obter a rede: essa deve ser uma medida precisa do tempo real necessário.
Como a maioria dos sistemas hoje em dia pode ser interrompida peremptoriamente, é importante executar várias execuções de tempo para verificar a variabilidade. Em vez de executar uma longa execução de segundos, faça m execuções de cerca de N / mNmN/ m segundos cada. Isso ajuda a fazer isso em um loop duplo de uma só vez. Não só é mais fácil de manusear, como também introduz um pouco de correlação negativa em cada série temporal, o que realmente melhora as estimativas.
Ao usar esses princípios básicos do design experimental, você controla essencialmente quaisquer diferenças devido à maneira como implanta o código (por exemplo, a diferença entre um loop for e replicate ()). Isso faz o seu problema desaparecer.