For me at least I prefer committing at the end of the day but I can see the appeal of only committing once a feature etc has been completed. However, I would suggest this is bad due to the progress you make as you get to that solution/new feature.
It's also easier for me to at the end of the day as I change machines - so by necessity, I have to commit all the time to continue development.
I'd say the tl;dr is commit when something meaningful has been done, useful information has been added and/or through necessity (such as moving machines).