Speed is mainly a function of how deeply mapped and how many objects on the screen. OR is generally faster as it's more deeply mapped. You could do the same with DP, but that defeats the point of using DP over OR.
Originally Posted by NoUse4aName
DP's main advantage I think is when you do lots of refactoring or working with high level tests and abstract programming patterns.
For example... Say you have 2 products. Product A - Super Productivity Booster Free, and Product B - Super Productivity Booster Pro.
Both have the same shared functionality that's in Product A, so you want to reuse the same test for both. But say for some retarded reason, the Product A has all the elements contained inside another pane that also holds the native advertising, and you happened to map product A first.
With OR, because everything is deeply mapped, you would have to create 2 separate mapping configurations, each with their own deep mapping.
While using DP you can have you mapping class that can leverage setting objects at runtime, and use relative mapping.
Keep in mind you can use both. I prefer the hybrid approach of using OR to recognize parent panes, windows, and parent containers. Then use DP within a ScreenObject pattern to recognize the individual controls. It minimizes the deep search while allowing the flexibility of switching configurations and still have the individual elements maintainable.
GetParentPane = Mapping.to.the.pro.parent.pane
GetParentPane = Mapping to the free product parent pane.
return GetParentPane().Find('path to child element')