Variables globales en C ++ moderno

¿Cuáles son las desventajas (objetivas) de crear una clase donde todos los miembros (atributos, funciones) son estáticos? En particular en comparación con el uso de un espacio de nombres? ¿O prefieres crear variables / funciones globales?

Me gusta crear atributos estáticos porque los encuentro "más ordenados". (Sé exactamente de dónde vienen, etc.) No estoy muy familiarizado con los espacios de nombres. Y no me siento cómodo con las variables globales, porque no estoy muy familiarizado con las palabras clave C comoextern ystatic.

Además, si consideramos la clase

class MyStaticClass
{
    private:

        static int x;
        static double y;

    public:

        static float s;
        static double weatherForecast(unsigned int, char);
};

y el espacio de nombres

namespace MyNamespace
{
    int x;
    double y;
    float s;
    double weatherForecast(unsigned int, char);
}

¿Hay diferencias (en cuanto al rendimiento) entre llamadasMyStaticClass::weatherForecast y llamandoMyNamespace::weatherForecast?

¿Hay diferencias (en cuanto al rendimiento) entre lectura / escrituraMyStaticClass::s y lectura / escrituraMyNamespace::s?

¿Cambiaría alguna de las respuestas a las preguntas anteriores si se usaran clases en lugar de tipos primarios?

Respuestas a la pregunta(1)

Su respuesta a la pregunta