a UNIQUE set of innovative tools

Integrated in a straightforward mini-toolbar, a HUGE toolset made with all the classical profiler, but also a lot of innovative and unique new profilers. With more than a dozens profiling options, you have everything in your hands to make your Flash application better.

The BIG list:

Global Stats Profiler (Classic)
Instanciation Profiler (Classic)
Function Profiler (Classic)
Permanent Search Filter (PRO)
Internal Events Profiler (Unique)
Loaders Profiler (Unique)
Resources Grabber (PRO)
DisplayList Profiler (Unique)
Overdraw profiler (Unique)
Mouse Listeners profiler (Unique)
Custom User Events (PRO)
Flash Console (PRO)
Garbage Collector Triggering (Classic)
Instanciation/Garbage "Raw Data Dump" (Unique, for PowerDevs!)
Function Call listing "Raw Data Dump" (Unique, for PowerDevs!)
Interlaced Sampling/Function Call listing "Raw Data Dump" (Unique, for PowerDevs!)
Direct as3-code command for SWC embedding (Unique, for PowerDevs!)
Continuous Profiling (Unique)
MonsterDebugger "Automated Connectivity" (Unique)


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.

Permanent Search Filter     //Exclusive to PRO version

The Memory Profiler, Performance Profiler, Loader Profiler and User Events can be trimmed down using search filters. These filters are available in all versions. Permanent filter (keeping filter across multiple launch) can be activated by PRO users in the configuration tab. For PRO users, this also trims the RAW DataDumps and keep only what have been entered in the filter boxes.

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.

Resources Grabber     //Exclusive to PRO version

The LoaderProfiler already gives the possibility to copy the URL of any file being loaded by a flash loader. This PRO feature gives you the possibility to jump directly to one of the resource that has been downloader (png, jpg, etc.). It can also grab SWF being loaded by the flash AVM, in the "ready to run state". This means SWF bytes can be saved unpacked, and decrypted. Obviously this can't do anything about obfuscation, but no type of encryption will block this from grabbing a SWF.

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.

Custom User Events     //Exclusive to PRO version

This tool helps developer to log custom events directly inside TheMiner. An event is defined by multiple field containe in the UserEventEntry class. You can assign name and value, but also priority, progress bars and updatable properties to control perfectly what you trigger. This tool is very useful to keep track of what's going on in your application in a very clean and simple interface. Like the other profilers, you can use search filters and do data snapshot to clipboard.

FLash Console     //Exclusive to PRO version

From simple log to complex object inspection with internal links, FlashConsole is an Open-Source tool that logs everything in a very efficient way. You can inspect object properties, modify properties value, and show DisplayList structure on screen. The integration made in TheMiner is only a sub-set of the whole tool, keeping it to its most useful features, logging and inspecting. This profiler is only useful when integration is made with TheMiner SWC file. Using Call such as TheMiner.Log("text", "Channel") or TheMiner.InspectObject(aObj, "Channel") will print information in the Console Tab.

Garbage Collector Triggering

It could not get simpler. 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.
With PRO version, from MemoryProfiler and PerformanceProfiler you can filter RAW content with Permanent Search Filters

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.


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.

Get it now!

Watch the tutorials