mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-25 06:24:27 +08:00
publish() used to remove each published object from this thread's cycle-collector candidate buffers after the walk, which loaded every object's collector header a second time. On graphs larger than the cache that second pass took about a third of the publish. scr_pub_mark now takes a buffered object out of its buffer when it marks it, while the header is in cache: the slot is cleared and its index recorded. When the publish ends, scr_cyc_pub_fill closes the empty slots with entries from the ends of the buffers. A refused publish puts each taken object back in its slot first. After the walk, the log is read only for dyn containers, the RC audit and LeakSanitizer. The emitted walkers test null and immortal references (parent links, values published before) before calling scr_pub_push, and the string walker checks for ASCII 32 bytes at a time. Adds the published-graphs runtime benchmark, a cycle collector test for the take, restore and fill hooks, and corpus program 5702.
236 lines
4.2 KiB
JSON
236 lines
4.2 KiB
JSON
{
|
|
"workloads": [
|
|
{
|
|
"name": "json-records",
|
|
"entry": "workloads/json-records.ts",
|
|
"args": [
|
|
"4"
|
|
]
|
|
},
|
|
{
|
|
"name": "regex-logs",
|
|
"entry": "workloads/regex-logs.ts",
|
|
"args": [
|
|
"1"
|
|
]
|
|
},
|
|
{
|
|
"name": "ast-interp",
|
|
"entry": "workloads/ast-interp.ts",
|
|
"args": [
|
|
"5"
|
|
]
|
|
},
|
|
{
|
|
"name": "records-sort",
|
|
"entry": "workloads/records-sort.ts",
|
|
"args": [
|
|
"1"
|
|
]
|
|
},
|
|
{
|
|
"name": "template-render",
|
|
"entry": "workloads/template-render.ts",
|
|
"args": [
|
|
"1"
|
|
]
|
|
},
|
|
{
|
|
"name": "functional-pipeline",
|
|
"entry": "workloads/functional-pipeline.ts",
|
|
"args": [
|
|
"1"
|
|
]
|
|
},
|
|
{
|
|
"name": "async-pipeline",
|
|
"entry": "workloads/async-pipeline.ts",
|
|
"args": [
|
|
"1"
|
|
]
|
|
},
|
|
{
|
|
"name": "word-graph",
|
|
"entry": "workloads/word-graph.ts",
|
|
"args": [
|
|
"2"
|
|
]
|
|
},
|
|
{
|
|
"name": "alloc-trees",
|
|
"entry": "workloads/alloc-trees.ts",
|
|
"args": [
|
|
"1"
|
|
]
|
|
},
|
|
{
|
|
"name": "cyclic-graphs",
|
|
"entry": "workloads/cyclic-graphs.ts",
|
|
"args": [
|
|
"3"
|
|
]
|
|
},
|
|
{
|
|
"name": "numeric-kernels",
|
|
"entry": "workloads/numeric-kernels.ts",
|
|
"args": [
|
|
"0.5"
|
|
]
|
|
},
|
|
{
|
|
"name": "typed-array-scan",
|
|
"entry": "workloads/typed-array-scan.ts",
|
|
"args": [
|
|
"3"
|
|
]
|
|
},
|
|
{
|
|
"name": "typed-array-scan-workers",
|
|
"entry": "workloads/typed-array-scan-workers.ts",
|
|
"args": [
|
|
"3"
|
|
]
|
|
},
|
|
{
|
|
"name": "intern-table",
|
|
"entry": "workloads/intern-table.ts",
|
|
"args": [
|
|
"table",
|
|
"8",
|
|
"100000"
|
|
]
|
|
},
|
|
{
|
|
"name": "intern-table-map",
|
|
"entry": "workloads/intern-table.ts",
|
|
"args": [
|
|
"map",
|
|
"8",
|
|
"100000"
|
|
]
|
|
},
|
|
{
|
|
"name": "intern-table-1",
|
|
"entry": "workloads/intern-table.ts",
|
|
"args": [
|
|
"table",
|
|
"1",
|
|
"100000"
|
|
]
|
|
},
|
|
{
|
|
"name": "intern-table-map-1",
|
|
"entry": "workloads/intern-table.ts",
|
|
"args": [
|
|
"map",
|
|
"1",
|
|
"100000"
|
|
]
|
|
},
|
|
{
|
|
"name": "value-objects",
|
|
"entry": "workloads/value-objects.ts",
|
|
"args": [
|
|
"2"
|
|
]
|
|
},
|
|
{
|
|
"name": "optional-fields",
|
|
"entry": "workloads/optional-fields.ts",
|
|
"args": [
|
|
"10"
|
|
]
|
|
},
|
|
{
|
|
"name": "record-boundaries",
|
|
"entry": "workloads/record-boundaries.ts",
|
|
"args": [
|
|
"8"
|
|
]
|
|
},
|
|
{
|
|
"name": "number-maps",
|
|
"entry": "workloads/number-maps.ts",
|
|
"args": [
|
|
"4"
|
|
]
|
|
},
|
|
{
|
|
"name": "published-graphs",
|
|
"entry": "workloads/published-graphs.ts",
|
|
"args": [
|
|
"1"
|
|
]
|
|
},
|
|
{
|
|
"name": "validate-errors",
|
|
"entry": "workloads/validate-errors.ts",
|
|
"args": [
|
|
"1"
|
|
]
|
|
},
|
|
{
|
|
"name": "csv-numbers",
|
|
"entry": "workloads/csv-numbers.ts",
|
|
"args": [
|
|
"1"
|
|
]
|
|
},
|
|
{
|
|
"name": "log-lines",
|
|
"entry": "workloads/log-lines.ts",
|
|
"args": [
|
|
"4"
|
|
]
|
|
},
|
|
{
|
|
"name": "log-summary",
|
|
"entry": "../builds/log-summary/main.ts",
|
|
"input": "log-summary",
|
|
"args": [
|
|
"{input}",
|
|
"--min-status",
|
|
"200",
|
|
"--limit",
|
|
"12"
|
|
]
|
|
},
|
|
{
|
|
"name": "inventory-report",
|
|
"entry": "../builds/inventory-report/main.ts",
|
|
"input": "inventory-report",
|
|
"args": [
|
|
"{input}"
|
|
]
|
|
},
|
|
{
|
|
"name": "cli-config",
|
|
"entry": "workloads/cli-config.ts",
|
|
"input": "cli-config",
|
|
"launches": 20,
|
|
"args": [
|
|
"{input}",
|
|
"--env",
|
|
"production",
|
|
"--max-wave",
|
|
"12"
|
|
]
|
|
},
|
|
{
|
|
"name": "http-api",
|
|
"kind": "server",
|
|
"entry": "workloads/http-api.ts",
|
|
"args": [],
|
|
"client": {
|
|
"script": "clients/http-load.mjs",
|
|
"args": [
|
|
"--connections=64",
|
|
"--threads=2",
|
|
"--warmup=4000",
|
|
"--requests=40000"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|