Estado da funcionalidade “memset” em C ++ com compiladores modernos

Contexto:

Um tempo atrás, me deparei com este artigo DDJ 2001 por Alexandrescu:http://www.ddj.com/cpp/184403799

É sobre comparar várias maneiras de inicializar um buffer com algum valor. Como o que "memset" faz para valores de byte único. Ele comparou várias implementações (memcpy, explícito "for" loop, duff's device) e realmente não encontrou o melhor candidato em todos os tamanhos de conjunto de dados e todos os compiladores.

Citar:

Há uma percepção muito profunda e triste subjacente a tudo isso. Estamos em 2001, o ano da Odisséia Espacial. (...) Saia da caixa e olhe para nós - depois de 50 anos, ainda não somos muito bons em preencher e copiar a memória.

Questão:Alguém tem informações mais recentes sobre esse problema? Implementações recentes do GCC e do Visual C ++ têm desempenho significativamente melhor do que há 7 anos?Eu estou escrevendo código que tem uma vida útil de 5 + (provavelmente 10 +) anos e que processará tamanhos de matrizes de alguns bytes para cem de megabytes. Eu não posso supor que minhas escolhas agora serão ótimas em 5 anos. O que devo fazer:a) use o memset do sistema (ou equivalente) e esqueça o desempenho ótimo ou assuma que o tempo de execução e o compilador lidarão com isso para mim.b) benchmark de uma vez por todas em vários tamanhos de array e compiladores e alternar em tempo de execução entre várias rotinas.c) executar o benchmark na inicialização do programa e alternar em tempo de execução com base em dados precisos (?).

Edit: Estou trabalhando em software de processamento de imagem. Meus itens de array são PODs e cada milissegundo conta!

Edit 2: Obrigado pelas primeiras respostas, aqui estão algumas informações adicionais:

Inicialização de buffer pode representar 20% -40% do tempo total de execução de alguns algoritmos.A plataforma pode variar nos próximos 5 anos, embora permaneça na categoria "CPU mais rápida que o dinheiro pode comprar da Dell". Compiladores serão alguma forma de GCC e Visual C ++. Nenhuma coisa incorporada ou arquiteturas exóticas no radarEu gostaria de ouvir as pessoas que tiveram que atualizar seu software quando MMX e SSE apareceram, já que eu vou ter que fazer o mesmo quando "SSE2015" estiver disponível ... :)

questionAnswers(12)

yourAnswerToTheQuestion