Node.js: write a performance benchmarking test suite for the concurix-monitor library

Node.js: write a performance benchmarking test suite for the concurix-monitor library

Closed - This job posting has been filled and work has been completed.

Job Description

Concurix offers a popular Node.js profiling and monitoring product. Our solution automatically instruments an entire Node.js application, allowing for unprecedented insight into what is happening in an app.

The automatic instrumentation is enabled by the 'concurix-monitor' Node.js module (http://npm.im/concurix-monitor). This is a small monitoring agent that is installed in a customer's application. This agent collects performance data and sends it to concurix.com for further analysis and visualization.

We are constantly looking to improve the performance of our own tools, and as part of that we are looking for help to build out a performance benchmarking suite for concurix-monitor.

This suite should do the following:
1. Create a set of modules to be monitored for this suite (**see below for details)
2. Run the test suite with monitoring turned off; establish a baseline of performance.
3. Run the test suite with monitoring turned on.
4. compute the performance impact of the changes and report metrics.

The tests should be run often enough to generate statistically meaningful results, and a standard deviation for the results should also be computed.

The set of modules to written should include both very simple and very complex ones, including at least:
1. A simple module with 10 functions that simply returns / performs no work.
2. A module that does more extensive computation in each function.
3. A module that has functions that take functions as arguments (e.g. callbacks), and similarly returns new objects with function attributes.
3. Similar to #3, except that the inputs and outputs of the module methods should be complex (e.g. think of something like express, where the Request and Response objects passed into a route handler are very complex objects). In this case, there should be at on the order of 100 properties on the input and output objects.

It is OK for the modules above to include some auto generated functions and objects to help keep the benchmarking code simple and elegant.

Code for this project should be submitted at regular interviews to the https://github.com/Concurix/concurix-monitor-perf repository.

To apply for this job, please sign into http://www.concurix.com/interview and run Concurix on a Node.js program of your choice. Include a screenshot of your program running in Concurix along with any other information you'd like to share.

We are offering a free Concurix profiling plan to anybody interested in working on this job--but you have to use the login at http://www.concurix.com/interview to obtain the free copy. This offer is open to any applicant, even if you are not ultimately selected for the job.