Estou comparando dois métodos iterativos para inverter matrizes quadradas aleatórias. Como as matrizes são aleatórias, todo caso de teste leva quantidades diferentes de iterações e diferentes tempos decorridos. Minha pergunta é, além do tempo médio da CPU, o valor médio das iterações realizadas pelas informações úteis dos dois métodos para comparar os métodos.
performance
benchmarking
srijan
fonte
fonte
Respostas:
Em geral, ambos os métodos de comparação de desempenho têm seu lugar.
Comparar o tempo da CPU é, de certo modo, a métrica mais interessante, porque no final do dia você está realmente interessado em qual dos métodos é mais rápido. (Mas verifique se os critérios de término são comparáveis; por exemplo, se os dois métodos produzem uma aproximação com a mesma precisão). A desvantagem é que isso apenas informa qual método (e mais importante, qual implementação ) é mais rápido na máquina em que você executou os testes. Não há garantia de que uma máquina diferente com arquitetura ou software diferente escolha o mesmo vencedor.
A comparação de números de iteração , por outro lado, é independente da máquina, mas potencialmente enganosa se os dois métodos tiverem iterações muito diferentes - nesse caso, o método com iterações menos caras mas mais caras pode não ser preferido (por exemplo, métodos de otimização de Newton vs. gradiente se você precisar de precisão muito baixa).
Então, sim, faz sentido fornecer os dois números [1], e eu já o vi com frequência em publicações. Há também uma terceira opção:
[1] Definitivamente apresente estatísticas sobre várias execuções; se você mostrar meios, não esqueça de incluir também os desvios padrão.
fonte
Acho que o número de iterações é uma métrica enganosa, porque sugere "velocidade" quando não é. Para um exemplo simples de comparação de alguns pré-condicionadores diferentes que mostram essa diferença, consulte aqui: http://www.dealii.org/developer/doxygen/deal.II/step_6.html#Possibilityforextensions
fonte
Caso não esteja claro nas outras respostas, para que serve o número de iterações é o argumento do grande O.
Não é bom para velocidade absoluta, porque isso depende do tempo médio por iteração, que pode diferir entre os métodos por um grande fator.
Por exemplo, há uma tendência a ignorar o custo do cálculo de índices de matriz, e isso pode ser responsável por uma grande fração do tempo da CPU.
ADICIONADO: Além disso, como já apontei em outro lugar, para cada chamada do método, normalmente há um custo de instalação. Então, se as matrizes geralmente não são muito grandes, esse custo de instalação pode ser responsável por uma grande fração do tempo da CPU (de modo que removê-la faria uma grande diferença na velocidade).
fonte