v8-profiler

node bindings for the v8 profiler

  • 所有者: node-inspector/v8-profiler
  • 平台:
  • 許可證: BSD 2-Clause "Simplified" License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Build Status
Build status
npm version

v8-profiler provides node bindings for the v8
profiler and integration with node-inspector

Installation

npm install v8-profiler

Usage

var profiler = require('v8-profiler');

API

takeSnapshot([name]) - returns new HEAP Snapshot instance. name is optional argument, by default snapshot name will be constructed from his uid.

deleteAllSnapshots() - works as described in name.

var snapshot1 = profiler.takeSnapshot('1');
var snapshot2 = profiler.takeSnapshot();
profiler.deleteAllSnapshots();

startProfiling([name], [recsamples]) - start CPU profiling. name is optional argument, by default profile name will be constructed from his uid. recsamples is true by default.

stopProfiling([name]) - returns new CPU Profile instance. There is no strictly described behavior for usage without name argument.

setSamplingInterval([num]) - Changes default CPU profiler sampling interval to the specified number of microseconds. Default interval is 1000us. This method must be called when there are no profiles being recorded. If called without arguments it resets interval to default.

deleteAllProfiles() - works as described in name.

profiler.startProfiling('', true);
setTimeout(function() {
  var profile = profiler.stopProfiling('');
  profiler.deleteAllProfiles();
}, 1000);

HEAP Snapshot API

Snapshot.getHeader() - provides short information about snapshot.

Snapshot.compare(snapshot) - creates HEAP diff for two snapshots.

Snapshot.delete() - removes snapshot from memory.

Snapshot.export([callback]) - provides simple export API for snapshot. callback(error, data) receives serialized snapshot as second argument. (Serialization is not equal to JSON.stringify result).

If callback will not be passed, export returns transform stream.

Snapshot.serialize - low level serialization method. Look Snapshot.export source for usage example.

var fs = require('fs');
var profiler = require('v8-profiler');
var snapshot1 = profiler.takeSnapshot();
var snapshot2 = profiler.takeSnapshot();

console.log(snapshot1.getHeader(), snapshot2.getHeader());

console.log(snapshot1.compare(snapshot2));

// Export snapshot to file file
snapshot1.export(function(error, result) {
  fs.writeFileSync('snapshot1.json', result);
  snapshot1.delete();
});

// Export snapshot to file stream
snapshot2.export()
  .pipe(fs.createWriteStream('snapshot2.json'))
  .on('finish', snapshot2.delete);

CPU Profile API

Profile.getHeader() - provides short information about profile.

Profile.delete() - removes profile from memory.

Profile.export([callback]) - provides simple export API for profile. callback(error, data) receives serialized profile as second argument. (Serialization is equal to JSON.stringify result).

var fs = require('fs');
var profiler = require('v8-profiler');
profiler.startProfiling('1', true);
var profile1 = profiler.stopProfiling();
profiler.startProfiling('2', true);
var profile2 = profiler.stopProfiling();

console.log(snapshot1.getHeader(), snapshot2.getHeader());

profile1.export(function(error, result) {
  fs.writeFileSync('profile1.json', result);
  profile1.delete();
});

profile2.export()
  .pipe(fs.createWriteStream('profile2.json'))
  .on('finish', function() {
    profile2.delete();
  });

node-inspector

Cpu profiles can be viewed and heap snapshots may be taken and viewed from the
profiles panel.

主要指標

概覽
名稱與所有者node-inspector/v8-profiler
主編程語言C++
編程語言Python (語言數: 3)
平台
許可證BSD 2-Clause "Simplified" License
所有者活动
創建於2010-12-01 07:06:05
推送於2018-08-21 03:59:08
最后一次提交2017-03-28 15:24:11
發布數30
最新版本名稱v5.7.0 (發布於 2017-03-23 10:59:50)
第一版名稱v3.7.0 (發布於 2013-03-05 09:49:50)
用户参与
星數1.1k
關注者數27
派生數134
提交數160
已啟用問題?
問題數100
打開的問題數39
拉請求數13
打開的拉請求數5
關閉的拉請求數19
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?