Al di là dell'eccellente risposta di @ Christophe, il codice generato per la staticità è molto probabilmente peggiore di quello della variabile locale, quindi se sei interessato al beneficio del sotto-cofano, la statica è peggiore sui processori moderni.
Il motivo è che la statica deve trovarsi da qualche parte nella memoria che può essere trovata da tutti gli altri thread e da tutte le altre chiamate. Questo significa fondamentalmente metterli nella memoria globale.
Nel corso degli anni, processori e amp; i compilatori insieme hanno un accesso significativamente ottimizzato alle variabili locali a causa della popolarità del loro utilizzo, rispetto ad altre variabili, come globals, statica e campi. Il compilatore può scegliere di memorizzare una variabile locale in un registro CPU, e anche se non lo fa (quindi utilizza lo stack di invocazione), tutto lo stack è quasi certamente nella cache. L'accesso allo stack è solitamente una modalità di indirizzamento di spostamento breve (fuori dal registro puntatore dello stack). Tuttavia, l'accesso a globali o statici richiede in genere un offset esteso o un indirizzo assoluto, pertanto le istruzioni risultanti in tal senso sono più lunghe del loro equivalente per l'accesso alla memoria dello stack.
Tutto ciò detto, tuttavia, a causa della combinazione di static e const il compilatore può rilevare che può sostituire il valore costante al punto di utilizzo, quindi forse l'uso di const mitiga quanto sopra. Tuttavia, il tuo frammento mostra almeno una statica non const, quindi forse la discussione è d'attualità.