Skip to content

Performance degradation when moving to GraalJS 23.1.1 (and GraalVM for JDK21) #779

Open
@efimbakulin

Description

@efimbakulin

Hey!

After moving our project to the latest version of GraalVM its performance degraded drastically (up to 2 times). The internal logic of the project is quite complex, but I've prepared a synthetic test showing the performance difference between GraalVM 22.3.3 and GraalVM for JDK21. The test simply makes a bunch of calls to the jsonParseStringify() function defined as follows:

const OBJECT_SIZE = 500;
const obj = {};

for (let i = 0; i < OBJECT_SIZE; i++) {
    obj["double_key" + i] = Math.random();
    obj["str_key" + i] = '#'.repeat(50);
};

function jsonParseStringify() {
    return JSON.parse(JSON.stringify(obj));
};

module.exports = {
    jsonParseStringify
};

It gives the following numbers in case of GraalVM 22.3.3

warming up
....................................................................................................
Iterations: 100000
Duration: 125.514641
Score: 796.719788 ops/second

testing
....................................................................................................
Iterations: 10000
Duration: 12.805132
Score: 780.936890 ops/second

and the following ones in case of GraalVM JDK21:

warming up
....................................................................................................
Iterations: 100000
Duration: 157.155243
Score: 636.313477 ops/second

testing
....................................................................................................
Iterations: 10000
Duration: 15.578632
Score: 641.904846 ops/second

The complete project may be found here https://github.com/efimbakulin/graalvm-jdk21-performance-test

Could you please give it a look? Probably there are some options which should be enabled to improve the things?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions