Skip to content

Optimizing hashing performance #136

Closed
@fabiospampinato

Description

What is the problem this feature will solve?

Making the hash functions significantly faster.

What is the feature you are proposing to solve the problem?

I'm not sure what the best option for this is, but running the following file:

import crypto from 'node:crypto';

const value = '/Users/fabio/path/to/some/random/file.js';

console.time ( 'crypto' );
for ( let i = 0; i < 100_000; i++ ) {
  crypto.createHash("sha1").update(value).digest("hex");
}
console.timeEnd ( 'crypto' );

I see the following output:

~  node hashbench.js
crypto: 106.557ms
~  node hashbench.js
crypto: 108.052ms
~  node hashbench.js
crypto: 107.642ms
~  node hashbench.js
crypto: 107.136ms
~  node hashbench.js
crypto: 107.747ms
~  bun hashbench.js
[29.98ms] crypto
~  bun hashbench.js
[33.87ms] crypto
~  bun hashbench.js
[30.74ms] crypto
~  bun hashbench.js
[30.78ms] crypto
~  bun hashbench.js
[30.12ms] crypto

Basically Node's sha1 function seems at least 3x slower than Bun's.

Hashing is at the core of many important things, so I'd argue it's important to hash as fast as possible since that would speed up a cascade of use cases.

I'm not sure what the best solution is here, but if Bun is 3x faster than Node here presumably there's a lot of room for improvement.

What alternatives have you considered?

No response

Metadata

Assignees

No one assigned

    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