Which should I use and when: node_load() or entity_load()? Title says it all.

I understand that entity_load provides a performant and efficient means to load multiple nodes whilst reducing database queries, so I presume in that instance I should be using entity_load(). But when I just want one node, which should I use? And will node_load() be deprecated in d8 in favour of the more generic entity_load() api?

I guess the same question goes for the familiar user_load() too.
node_load is just a fancy wrapper for entity_load.

That is node_load calls node_load_multiple which is a wrapper for entity_load. This means that performance wise there isn't really much of a difference, which function you use, unless you have to load a lot of nodes.

node_load has many advantages over entity_load


It's simpler
It increases code readability
it returns the node object instead of an array with the node object(s)


So in all, node_load is a convenience that you always should use whenever possible, then resort to node_load_multiple for cases where you need to load many more nodes.

entity_load should be used for loading entities when you don't know the type, or have it stored in a variable, in which case you can do

entity_load($type, ...);