The BIG list:
Global Stats Profiler
The most basic, yet frequently used, type of profiler.
This Profiler shows the frame per second (FPS): Target, Current, Min and Max.
It also tracks memory usage: Current, Min and Max.
A memory graph let you see the tooth created by memory-allocation.
Finally, an image let you perceive in one quick look if there are color transformation or resize of the stage.
instantiation Profiler
Object instantiation tracking is the base of any good profiler. Knowing what has been created, how much instances are alive and are collected is crucial.
Even more in a system like Flash where performance strongly depends on the Garbage Collector. By targeting instances that are created the most, and removing as much as possible instances that are only use in one function can boost the performances a lot!
This tool sort instantiation in different ways to facilitate the targeting. Like the other profilers of The Miner, you'll find on the screen only the most important data, but all the data can be save in a clipboard snapshot for finer debugging.
Function Profiler
Time required by a function to be processed is very important. By tracking functions that take the most time, you can identify very quickly bottlenecks
and prioritize your optimizations. This profiler sorts the function by their self-time or by the total time with their sub-calls.
Again, all the most important data is on the Top as it's being sorted. But the whole call list and times are available when doing a snapshot to clipboard.
Internal Events Profiler
There are multiple kinds of events triggered by Flash and the AVM. These events can impact the way your application behave.
This profiler list most of the internal events, and draw a graph of how the time is being use in Flash.
Internal Events include: [Verify], [Reap], [Mark], [Sweep], [EnterFrame], [Timers], [PreRender], [Render], [AVM1], [Mouse], [IO], [ExecutionQueue].
Loaders Profiler
Ever wonder what file was being downloaded? What file succeed and what file didn't? Local or Remote, the Loaders Profiler will list all file being loaded with their size and http status.
As the files are being loaded, a Progress Bar will be showed, and a color indicates what kind of loaders has been used to load it.
It will also show the error when the file didn't load. And as for the other Profilers, only the most recent download are showed on screen, but you can do a snapshot to clipboard to get all file from the launch of the application.
DisplayList Profiler
The stage and display list management is heavy in flash. Even more when sprites and clip are constantly created and animation continuously playing.
This profiler highlight all DisplayObject being added to stage, and indicate if the object is a new one (memory instantiation) or a re-used one (Pooling).
The more pooling you have, the less memory variation you should get.
The profiler also shows "GC pending objects": Objects that are still existing and playing, even if not referenced anymore and waiting for GC.
Overdraw profiler
If you are using the DisplayList a lot, you might be slowed down because of the management overhead of Flash. Having too much sprites, MovieClips is often not a good thing.
This profilers Shows the amount of Overlapping DisplayObject, and reveal invisible (yet added to stage) DisplayObject (Useful when you have hidden buttons!).
It also indicates the number of DO added and Removed from stage every seconds, and the current total number of DO on stage.
Mouse Listeners profiler
The main goal of this profiler is to reveal all the Sprites that have Mouse Event Listeners bind to them. All Sprites that can be clicked, triggered or are listening for MouseOver and other events will be highlighted.
You can also see hidden buttons, or part of the application that just wait for a click to open something. The profiler also shows Sprite that are "mouseEnabled" but don't have listeners, hence might slow down your app for nothing.
Garbage Collector Triggering
It could not get more simple. By clicking on the little trash can, it forces a synchronous Garbage Collection.
instantiation/Garbage "Raw Data Dump"
As opposed to the "instantiation Profiler", this profiler does not show anything on screen. Instead, it record of a given amount of time a all samples processed by the AVM.
Then, save it as a "nearly-raw" list in the Clipboard. You can then process it the way you want in a grid editor such as Excel for an ever-finer profiling.
Function Call listing "Raw Data Dump"
This profiler can be used to track the exact list of function that have been called, and at what time.
In a Debug SWF, it will also track for each function the file path of the function being called, and the exact lines being processed.
You can track something as fine as "has the IF condition been working or not". This profiler also works as a raw-data dump in the clipboard of all function called during a given amount of time.
Interlaced Sampling/FunctionCall listing "Raw Data Dump"
By combining the two previous profilers (toggle them on at the same time) TheMiner start a special process (very heavy) that can record both Function Calls, and allocation, and mixing them together in one continuous flow of information.
By doing so, you can track multiple Function Call leading to some allocation hard to track down. While this process is very heavy, it makes sure you track every single object allocated with high precision, even the object with a very short allocation time.
This process also restrains any object from being collected before being reported in this profiler. Forcing a 100% complete allocation report.
Continuous Profiling
Each profiler can run "on-demand" when clicking the icon in toolbar. But when changing from a profiler to another, all data will be loss.
The Continuous profiling option can be turned on in the "configuration" tab.
All main profilers can be on all-the-time by turning continuous profiling on, so that when changing from a profiler to another. the data continue to be recorded in background.
When Enabling or Disabling Continuous Profiling, the option is automatically saved in a SharedObject so that it will be used for all application launched for now on.
Skins
Since
The Miner use a semi-transparent interface on top of the main application, having a good "contrast" with the application is important.
The default skin use high-contrast, but if you want, you can change the default skin and load one you created!
All the colors and images being use in
The Miner is centralized in a single PNG for easier skinning.
Minimizable
Having that little toolbar all the time take too much space? No problem! Use the minimize button to fold the toolbar into a simple little icon. Click it again to make the bar come back.
Easy, simple, and
almost invisible!
Action Commands Pipe-line
The Miner is exposing internal functionality in a very easy to use command pipe-line. When using the SWC embedding method, you can now call
TheMiner.DO(TheMinerActionEnum.*) to do
open or close any of the profilers, start and stop collection of samples, trigger screen capture, for GC, hide or show TheMiner top-bar, etc. You can then contextual profiling more easily and expend your current usage pattern!.
MonsterDebugger "Automated Connectivity"
The Miner is a profiling tool that can crunch a lot of data about your application. But it's not very useful for "tweeking" DisplayList values live wish is the main strength of MonsterDebugger.
Since
The Miner is launched as a pre-application, it can define a valid hook for MonsterDebugger even in application not built with their hook!
By enabling MonsterDebugger to be launched from
The Miner we decided to create a ever-more global-debugging system.