The answer to this question hasn't changed in .NET 4 - for best performance you should still be using XmlReader as it streams the document instead of loading the full thing into memory.
The code you refer to uses XmlReader for the actual querying so should be reasonably quick on large documents.