Yep, when you Dim 'as New ...' like this:
VB Code:
  1. Dim rs As New ADODB.Recordset
..VB does a bit of 'clever' memory management, rather than create all objects at the point of definition (the Dim line), it creates them when they are first used (ie: the first line of code which uses rs).

In terms of the memory used this is very good, as you do not have lots of objects in memory which aren't being used - if you have lots of these in the General Declarations section this would be as soon as your form loads (or when the program loads if they are in modules!).

Unfortunately, in order to do this the object has to be created when it is first used - and to do this you need to check every time that it is used if it has already been created, and this checking process takes time. For objects like recordsets (which are often used hundreds of times) the slow-down effect of all of these checks is significant.