Como o título diz: Como você testa e compara adequadamente diferentes implementações de mutexes em c ++?
Essencialmente, eu escrevi minha própria classe std :: mutex like para um projeto rodando em um núcleo 2, armv7, com o objetivo de minimizar a sobrecarga no caso não contestado. Agora, estou pensando em usar o referido mutex em mais lugares e também em arquiteturas diferentes, mas antes de fazer isso, gostaria de garantir que
- está realmente correto
- não há nenhum caso patológico em que ele tenha um desempenho muito pior do que um std :: mutex padrão.
Obviamente, escrevi alguns testes de unidade básicos e micro-benchmarks e tudo parece funcionar, mas no código multiencadeado "parece funcionar" não me dá grande conforto.
- Então, existem técnicas de análise estática ou dinâmica estabelecidas?
- Quais são as armadilhas comuns ao escrever testes de unidade para classes mutex?
- Quais são os casos típicos que devemos observar (em termos de desempenho)?
Só estou usando tipos de biblioteca padrão para a implementação, que inclui operações de carregamento e armazenamento não-consistentes e consistentes em atômicas. No entanto, estou interessado principalmente em conselhos agnósticos de implementação, pois também gostaria de usar o mesmo equipamento de teste para outras implementações.