hxScout

Overview

hxScout helps you identify hot spots in your application as well as in frameworks and libraries you use. This allows you to spend your optimization effort wisely for the highest ROI.

Terminology: In this document, your application is sometimes referred to as the application under test, or AUT. The AUT includes the hxtelemetry library which sends telemetry data to hxScout over the network (often to the same computer, but optionally from another device to your computer). hxScout displays the telemetry data.

Warning: hxScout and hxtelemetry are provided as-is without any warranty for fitness for any particular purpose, and without guarantee that is in beta. Some features may not work or may not be fully implemented. Feel free to file bug reports or feature requests on github.

Using hxScout

To quickly evaluate hxScout, it comes preloaded with a sample session that you can browse. Start hxScout and click the "Load sample data" button.

This will bring up the main interface with which you can explore the data in the telemetry session.

Interface Overview

The interface of hxScout is split into six panes:

Keyboard shortcuts

Coming soon...

Investigating with the Profiler

Coming soon...

Investigating Allocations and Garbage Collection

Coming soon...

Profiling Your Haxe C++ App

By including the hxtelemetry library, your Haxe C++ application sends telemetry data to hxScout over the network. This allows profiling of local desktop apps or those on devices like mobiles or consoles.

Environment Setup

First, install the hxtelemetry library with haxelib:

haxelib install hxtelemetry

You may also need to update hxcpp. Starting with hxcpp 3.2.171 (available on haxelib), telemetry support is built into hxcpp. Check your version of hxcpp with haxelib list hxcpp. If necessary, update hxcpp using:

haxelib update hxcpp

Telemetry Setup

Profiling hxcpp apps does not require an application framework, but some frameworks expedite telemetry setup.

OpenFL 3.1.1 or newer

If your app is using OpenFL 3.1.1 or newer, enabling telemetry is as easy as adding -Dtelemetry to your openfl / lime commandline. OpenFL automatically includes the hxlelemetry library and sets up telemetry.

Mobile devices or consoles: To profile an application running on another device, you need to specify the IP address of the computer running hxScout in your project.xml file:

<config:hxtelemetry host="192.168.1.100" allocations="true" />

Snow/Luxe

Stefan Bachmann posted an excellent write-up about using hxScout and hxtelemetry with Snow/Luxe over at snowkit.org: http://snowkit.org/2015/07/31/using-hxscout-with-snowluxe/

Other / No Framework

To generate telemetry data, applications under test must:

First launch hxScout, then launch your application. If telemetry data doesn't start showing up, verify your app was built with the proper libs and flags, and that network communication over socket port 7934 is open (and not blocked by a firewall.)

Many example apps are provided in the hxtelemetry/test directory. The HxTelemetry object can be configured as shown in some examples.

Multi-threading note: hxtelemetry is designed to work with multi-threaded apps. Right now the schema is: each thread instantiates an hxtelemetry object and calls advance_frame, resulting in separate sessions in hxScout. See my multi-threaded test for example. Later I'd like to investigate a schema where the data is displayed in the same hxScout session.

Framework Integration

If you're developing an application framework (e.g. OpenFL, Snow, heaps, etc) and want an easy, 1-switch telemetry setup for your users, shoot me a tweet.


Adobe Scout, Adobe® AIR®, and Adobe® Flash® are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.

hxScout is not affiliated with Adobe Systems Incorporated. hxScout is copyright Jeff Ward, all right reserved.

Use this software (hxscout.com, hxScout, and hxtelemetry) is entirely at your own risk. No warranty is expressed or implied. Not guaranteed for fitness for any purpose. Jeff Ward is not liable for damages of any kind that may result from the use (or inability to use) this software. This software may make use of analytics that track your use of the software. Use of the software constitutes acceptance of these terms. Terms are subject to change.