A inicialização variável local deve ser obrigatória?

Os problemas de manutenção que os locais não inicializados causam (particularmente os ponteiros) serão óbvios para qualquer um que tenha feito um pouco de manutenção ou aprimoramento do c / c ++, mas eu ainda os vejo e ocasionalmente ouço implicações de desempenho dadas como justificativas.

É fácil demonstrar em c que a inicialização redundante é otimizada:

$ less test.c
#include <stdio.h>
main()
{
#ifdef INIT_LOC
    int a = 33;
    int b;
    memset(&b,66,sizeof(b));
#else
    int a;
    int b;
#endif
    a = 0;
    b = 0;
    printf ("a = %i, b = %i\n", a, b);
}

$ gcc --version
gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)

[Não otimizado:]

$ gcc test.c -S -o no_init.s; gcc test.c -S -D INIT_LOC=1 -o init.s; diff no_in
it.s init.s
22a23,28
>       movl    $33, -4(%ebp)
>       movl    $4, 8(%esp)
>       movl    $66, 4(%esp)
>       leal    -8(%ebp), %eax
>       movl    %eax, (%esp)
>       call    _memset
33a40
>       .def    _memset;        .scl    3;      .type   32;     .endef

[Otimizado:]

$ gcc test.c -O -S -o no_init.s; gcc test.c -O -S -D INIT_LOC=1 -o init.s; diff
 no_init.s init.s
$

Então, o desempenho do WRT sob quais circunstâncias é a inicialização da variável obrigatória NÃO é uma boa ideia?

Se aplicável, não há necessidade de restringir as respostas a c / c ++, mas, por favor, seja claro sobre a linguagem / ambiente (e evidência reproduzível muito preferida à especulação!)

questionAnswers(17)

yourAnswerToTheQuestion