SDL_GetKeyState() called in game loop? yes/no?

I’ve noticed with glut, I usually create a keyboard array, which I update
with Key Down and Key Up events, like so:

GLUT VERSION:-------------

int keyDown[255];
void keyPressed(unsigned char key, int x, int y)
{
keyDown[key] = 1;
}

The SDL Version I would assume is like so (correct me if I have bad form,
this isn’t the actual code, it’s a modified example from my game):

SDL KEYDOWN/UP VERSION:

Uint8 keyDown[400]; (or some arbitrary number)

// handle keyboard events
void CGame::handleKeyboardEvent( SDL_Event event )
{
switch (event.type)
{
case SDL_KEYDOWN:
keyDown[ event.key.keysym.sym ] = 1;
break;
case SDL_KEYUP:"
keyDown[ event.key.keysym.sym ] = 0;
break;
}
}

// do game logic input processing
void CGame::doKeys()
{
if (keyDown[SDLK_ESCAPE} == 1)
exit(0);
}

With SDL however, I also have the SDL_GetKeyState() function, which I can
obtain a complete snapshot of the current keyboard state in a
crossplatform-friendly manner. But does SDL_GetKeyState() incur overhead if
I use it for every keypress? Because otherwise, wouldn’t I simply be able to
bypass changing the key state and just simply grab the latest snapshot each
gameloop? like so:

SDL KEYDOWN/UP VERSION:

Uint8 *keyDown; // my keyboard map

// called each game loop
void CGame::doKeys()
{
keyDown = SDL_GetKeyState(NULL); // get ALL keys

// do my input processing
if (keyDown[SDLK_ESCAPE} == 1)
exit(0);
}

I have a feeling I’ve answered my own question (the keydown/up version is
more flexible) but my issue is whether SDL_GetKeyState() is some sort of
resource hog that shouldn’t be used often.