1.0.42 • Published 1 year ago

v8-profiler-rs v1.0.42

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

简介

一个可以在线更加智能化的分析 v8 heapsnapshot 堆快照的项目,目前还在使用 Rust 开发中,欢迎 watch & star

$ cargo run # 通过 heapsnapshot 文件解析为 node 对象信息默认存储在 bar.json
$ yarn build # 生成 .node 文件包含 parseSnapShot 方法
$ yarn bench # benchmark 比较 Rust Napi binding 与 js 方法性能差距
yarn run v1.22.10
$ node -r @swc-node/register benchmark/bench.ts
Running "parseSnapShot" suite...
Progress: 100%

  Native parseSnapShot:
    16 ops/s, ±1.28%   | fastest

  JavaScript parseSnapShot:
    1 ops/s, ±38.28%    | slowest, 93.75% slower

Finished 2 cases!
  Fastest: Native parseSnapShot
  Slowest: JavaScript parseSnapShot
✨  Done in 15.78s.

Node Struct

pub struct Node {
    pub node_type: JsValueType,
    pub name: JsValueType,
    pub id: JsValueType,
    pub self_size: JsValueType,
    pub edge_count: JsValueType,
    pub trace_node_id: JsValueType,
    pub edges: Option<Vec<Edge>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Edge {
    pub edge_type: JsValueType,
    pub name_or_index: JsValueType,
    pub to_node: JsValueType,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(untagged)]
pub enum JsValueType {
    JsString(String),
    JsNumber(usize),
}

执行后将会生成如下 json 结构

{
"node_type": "closure",
"name": "testMemoryLeak",
"id": 4611,
"self_size": 64,
"edge_count": 6,
"trace_node_id": 0,
"edges": [
    {
        "edge_type": "property",
        "name_or_index": "__proto__",
        "to_node": 9963
    },
    {
        "edge_type": "internal",
        "name_or_index": "feedback_cell",
        "to_node": 36845
    },
    {
        "edge_type": "internal",
        "name_or_index": "shared",
        "to_node": 28423
    },
    {
        "edge_type": "internal",
        "name_or_index": "context",
        "to_node": 4605
    },
    {
        "edge_type": "internal",
        "name_or_index": "code",
        "to_node": 1407
    },
    {
        "edge_type": "internal",
        "name_or_index": "map",
        "to_node": 10171
    }
]
}

npm.io

1.0.39

1 year ago

1.0.38

1 year ago

1.0.40

1 year ago

1.0.42

1 year ago

1.0.41

1 year ago

1.0.37

1 year ago

1.0.36

1 year ago

1.0.19

1 year ago

1.0.2

1 year ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.22

1 year ago

1.0.21

1 year ago

1.0.20

1 year ago

1.0.26

1 year ago

1.0.25

1 year ago

1.0.24

1 year ago

1.0.23

1 year ago

1.0.29

1 year ago

1.0.28

1 year ago

1.0.27

1 year ago

1.0.33

1 year ago

1.0.11

1 year ago

1.0.32

1 year ago

1.0.10

1 year ago

1.0.31

1 year ago

1.0.30

1 year ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.34

1 year ago

1.0.12

1 year ago

1.0.1

2 years ago

1.0.0

2 years ago