Na verdade, é muito fácil em nodeJS fazer o perfil de seus aplicativos sem nem mesmo tocar em seu código normal.
Isso é chamado de instrumentação.
O que você basicamente faz é usar um pouco da mágica do Javascript para envolver os métodos que realmente executam a lógica e medir o tempo de execução entre a chamada e o retorno.
Este é um exemplo muito fácil para uma instrumentação mongoDB que codifiquei:
collection = require("mongodb/lib/mongodb/collection").Collection
oldFind = collection.prototype.find
collection.prototype.find = ->
tagName = "#{@db.databaseName}/#{@collectionName}/find"
findParameters = arguments[1]
start = +new Date()
cursor = oldFind.apply @, arguments
selectorParameters = cursor.selector
oldArray = cursor.toArray
cursor.toArray = (cb) ->
instrumentedCb = =>
console.log tagName, +new Date() - start
if findParameters
console.log findParameters
if selectorParameters
console.log selectorParameters
cb.apply cursor, arguments
oldArray.apply cursor, [instrumentedCb]
cursor
Aqui está a essência sempre mais atualizada: https://gist.github.com/sebastianhoitz/4964446
Alguém está interessado em fragmentos de coleção como esses em uma biblioteca de código aberto útil que você pode usar para enviar métricas para statsD, ou seja?