Jeff,
MS has improved performance in every upgrade to the product. It is still true, however, that the largest time hit in performance during instantiation is the developer code in the events. PageFrames simly allow one to create alot more controls and write code in their Init's that must run during instantiation.
The technique od delayed instantiation is still the best solution for packed pageframes. That is where the pages have nothing on them until the user calls them forward. Each pages contents is saved as a class and a proxy object is placed on the page instead. In the UIEnable evetn of the proxy you can;
IF NOT TYPE("This.Parent.Contents.Name ") = "C"
This.Parent.NewObject("Contents","TheClassName","TheVCXName")
ENDIF
This way the user only encounters the hit if they go to the page.