Well I would think Obj-Browse might be launching less rules execution behind the scene right. Obj-Browse is just a method where pxRetrieveData is a full activity calling quite a lot of other rules as well.
I think Obj-Browse would be better as here you will be querying directly to the Database and do you mean pxRetrieveData as pxRetrieveReportData to get the Report details, if yes, in this scenario you need to call the activity and inside this report will be called and it will query the Database, the second option has a lot of process compared to first.
The obj-browse method would be faster than pxRetrieveReportData, however, it depends on the situation. Let's say you have a simple requirement to pull data from the table then you can go with an obj-browse method and it fetches the results quickly. On the other hand, if you have a complex query that needs a join the table/s then report definition call via pxRetrieveReportData is the right option.
pxRetrieveReportData - Executes more number rules, but provide more flexibility
obj-browse - light operation, but works for simple scenarios (less flexibility)