use more efficient emptiness checking

Using empty() instead of size() can be faster. size() can take linear time but empty() is guaranteed to take constant time.