Giter Club home page Giter Club logo

Comments (6)

alangpierce avatar alangpierce commented on May 14, 2024 5

After working through more details to get the Sucrase parser working in full, I tried this again on a more realistic dataset and the results seem more promising now! It's a TypeScript/JSX codebase that's about 4000 files and about 550,000 lines, and the task was to run the Sucrase parser to count the total number of tokens in all files. I confirmed that the number of tokens was the same for js and wasm, so hopefully this means that both are indeed doing a full correct parse.

Here are the numbers:

Dataset                JS time   wasm time
First 100 files        195ms     29ms
First 1000 files       906ms     302ms
All files              1805ms    860ms
All files, 10 times    8620ms    8345ms
All files, 100 times   77250ms   81142ms

As expected, V8 runs JS better on larger datasets since it has more time to identify hot code paths and compile them with good optimizations. It looks like JS still does slightly better at the largest scale, around 50 million lines of code, but even then the difference is small. In my own use cases, the typical scale is 1000-4000 files, so at least here, I'd expect a 2-3x speedup. It's unclear if the improvements are due to the more realistic dataset or improvements in AssemblyScript, but it looks like AssemblyScript will improve perf, especially on smaller datasets.

So this seems like a good enough justification to get the code fully working in AssemblyScript, including using i32 types instead of number and things like that. I'm still hoping to get the code into a state where the same codebase can run both, especially because debugging JS seems much nicer than debugging wasm.

from sucrase.

arv avatar arv commented on May 14, 2024 2

FWIW, we have successfully used sucrase with nodegun to get rid of the node start time and the JIT warmup time.

from sucrase.

alangpierce avatar alangpierce commented on May 14, 2024

Wow, that's awesome, I hadn't seen nodegun! I'll have to try it out when I get a chance.

from sucrase.

MaxGraey avatar MaxGraey commented on May 14, 2024

@alangpierce I think wasm should be faster than js for large dataset with latest AssemblyScript as well. Also if you change --optimize to -O3 here you could get much better performance

from sucrase.

 avatar commented on May 14, 2024

Is there any link to a working prototype for using Sucrase via WASM? I'd really appreciate it.

from sucrase.

remorses avatar remorses commented on May 14, 2024

Your parser performance is astonishing, it would be super cool to use your parser in webpack to decrease build time

This way you would also get native typescript support 😛

from sucrase.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.