Here are signatures.
glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
glUniform4fv(GLint location, GLsizei count, const GLfloat *v);
In my humble opinion, former should be faster because values can be passed directly from registers without fetching from memory. However, I want to hear many opinions.