Multiplicar por 9 é uma única instrução: Lea (x, x, 8), seguida por um turno.No entanto, usa uma tabela de pesquisa substancialmente maior: 256 bytes, vs. apenas 40 bytes no outro.A Arquitetura Zen da AMD tem uma pipulante, mas na Intel e no ARM, Popcount é alguns ciclos mais lentos.Implementado em montagem escrita à mão para evitar qualquer estranheza do compilador, parece basicamente assim:
Seis instruções, todas baratas nas CPUs modernas.Os números X86-64 são compilados com RustFlags = “-C-F-Feature =+PopCnt,+LZCNT”, pois a compilação padrão não assume que a arquitetura de destino suporta esses recursos.
Fonte: https://da-data.blogspot.com/2023/02/integer-log10-in-rust-and-c.html