1. A method for dynamic data collection in a device while the device is executing an application, comprising: collecting, by device hardware, data of high-level performance events that indicate alternative causes for a performance bottleneck; based on real-time analysis of the data, identifying a first performance event among the high-level performance events for causing the performance bottleneck; and re-configuring the device hardware to collect additional data of lower-level performance events that are under the first performance event and indicate additional alternative causes more specific than the alternative causes, wherein the collecting, identifying, and re-configuring are performed while the device is continuously executing the application.