Skip to content

Performance issue on relatively small file #537

@Porges

Description

@Porges

Describe the bug

Parsing the file located here with yaml.parse(str, {merge:true}) takes a very long time. Could there be something non-linear in the length of the file?

Currently it's under 500k:

$ wc bibliography.yaml
 18610  48360 489877 bibliography.yaml

To Reproduce
Steps to reproduce the behaviour.

const yaml = require('yaml');
const fs = require('fs');

fs.readFile("bibliography.yaml", 'utf8', (_, data) => {
    console.time('yaml-parse');
    const loaded = yaml.parse(data, {merge: true});
    console.timeEnd('yaml-parse');
});

Output:

yaml-parse: 10.501s

Expected behaviour
A clear and concise description of what you expected to happen.

By comparison, doing the same thing with js-yaml takes only:

const yaml = require('js-yaml');
const fs = require('fs');

fs.readFile("bibliography.yaml", 'utf8', (_, data) => {
    console.time('yaml-load');
    const loaded = yaml.load(data);
    console.timeEnd('yaml-load');
});

Output:

yaml-load: 125.814ms

Versions (please complete the following information):

  • Environment: Node v18.17.1
  • yaml: 2.4.1

Additional context
Add any other context about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions