Is WebAssembly magic performance pixie dust?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • iswasmfast

    Performance comparison of WebAssembly, C++ Addon, and native implementations of various algorithms in Node.js.

  • A few years ago I did similar comparison but in context of Node.js and sans manual optimizations: https://github.com/zandaqo/iswasmfast

    In my work, I have come to conclusion that it seldom pays off to go "native" when working with Node.js. More often than not, rewriting some computationally heavy code in C and sticking it as a native module yielded marginally better results when compared with properly optimized js code. Though, that doesn't negate other advantages of using said technologies: predictable performance from the start and re-using existing code base.

  • dodrio

    Discontinued A fast, bump-allocated virtual DOM library for Rust and WebAssembly.

  • Doesn't seem to stop MS with Blazor (.Net), Rust, and a few others from doing this. Also, there are plenty of games running in web assembly using bindings for things like WebGL and openal via similar bindings. As far as I know the current situation is pretty workable already and getting better. E.g. garbage collection is coming pretty soon.

    I guess it depends on what you are doing. For most people doing web assembly, the point is avoiding dealing with/minimizing the need for interacting with javascript. But still, it seems there are some nice virtual dom options for Rust: https://github.com/fitzgen/dodrio that are allededly fast and performant (not a Rust programmer myself).

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • proposals

    Tracking WebAssembly proposals (by WebAssembly)

  • * garbage collection

    I.e. most WASM proposals must be accepted before we can use the DOM from WASM... by the pace it's been moving forward, I guess this will take at least several years (3-4+).

    https://github.com/WebAssembly/proposals

  • human-asmjs

    Discontinued Tips and tricks for writing asm.js as a human - Note: WebAssembly has replaced asm.js, so this is no longer maintained.

  • One of my colleagues told me to stop doing that because in (I think) V8 these values are immediately converted back to a double nowadays. So annotating all code with |0 doesn't really add speed benefits there, just extra conversions between doubles and integers. Said colleague used to maintain human-asmjs so I trust he knows what he's talking about.

    [0] https://github.com/zbjornson/human-asmjs

  • expresscpp

    Fast, unopinionated, minimalist web framework for C++ Perfect for building REST APIs

  • I bench-marked using Intel vTune.

    for loop is interesting. It's why Tensorflow Core written in C++ instead Java.

    I don't know any complex C++ program that employ their own GCs when C++ has RAII which is superior to GC.

    Just give a try for C++11/14/17 and you will see which one is more maintainable and expressive.

    Look at Chromium codebase. It's the most beautiful codebase I've ever been to.

    I've done a lot of CRUD web apps in C++ using expresscpp [1] and I would say it's easy as ABC.

    A lot of Java folks haven't tried C++11/14/17 (Modern C++).

    C++ is Zen of OOP.

    [1] https://github.com/expresscpp/expresscpp

  • friendly-pow

    The PoW challenge library used by Friendly Captcha

  • Yeah, WebAssembly have i64/u64 types as first class citizens unlike JavaScript which should emulate it or use BigInt which drastically slower than native 64-bit types. That's why crypto algorithms got a lot of speed benefits. AssemblyScript also show this. See this:

    https://github.com/FriendlyCaptcha/friendly-pow

  • rabin-wasm

    Rabin fingerprinting implemented in WASM

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • scope_guard

    A modern C++ scope guard that is easy to use but hard to misuse.

  • > low level details leak into your high level description of code, making the two coupled. You can’t make them invisible.

    It's your job to make it not to leak. You have to write Modern C++ wrappers around C libs.

    Similarity, The same can be said for Java. You can do low level in Java.

    C++ is not C. C++ has backward compatibility with C.

    Look at Boost folks, they wrote a Modern C++ wrapper around a C HTTP parser.

    > And as I said, I’m familiar with RAII, it’s really great when the given object is scope-based, but can’t do anything otherwise.

    Nothing is impossible.

    You can use Scope Exit Guard with QT Widget.

    https://github.com/ricab/scope_guard

    > And if the new subclass has some non-standard object life cycle you HAVE to handle that case somewhere else, modifying another aspect of the code. It is not invisible, unless you want leaking code/memory corruption.

    Again, Scope Exit Guards solve your problem!

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts