Skip to content

[WIP] implement slice-by-4 with SIMD instructions#21

Closed
Touffy wants to merge 3 commits intomasterfrom
simd-slice-by-4
Closed

[WIP] implement slice-by-4 with SIMD instructions#21
Touffy wants to merge 3 commits intomasterfrom
simd-slice-by-4

Conversation

@Touffy
Copy link
Owner

@Touffy Touffy commented May 24, 2021

I need to run more comprehensive performance tests in various browsers (the benchmark in the README has been out of sync for a long time, I know), but preliminary results in Deno show a ~28% speedup of the CRC32 computation for the relatively small price of 0.5 kB of code (including the fallback for browsers without SIMD support).

The performance gain might increase someday, but the SIMD proposal does not (so far) include

  • horizontal XOR reductions
  • a 32x4 load that'd take 4 separate memargs as a vector (that one is unlikely to ever exist anyway)
    therefore, I could not vectorise all of the slice-by-4 at this time.

Anyway, 28% is already a significant improvement to the hottest part of the code.

That being said, the way I constructed the WASM binary in crc32.ts is really bad for maintenance. It's probably better to generate two full binaries and use a dynamic import (though that would prevent the synchronous import of downloadZip). Or make the SIMD optimisation an add-on with a Promise, while the basic implementation would remain hard-coded. I'd love to have some feedback about that issue.

@Touffy Touffy added the enhancement New feature or request label May 24, 2021
@Touffy Touffy changed the title (WIP] implement slice-by-4 with SIMD instructions [WIP] implement slice-by-4 with SIMD instructions May 24, 2021
@Touffy
Copy link
Owner Author

Touffy commented Jan 10, 2022

Closing this PR in favor of the other one

@Touffy Touffy closed this Jan 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant