Christopher Serr e464f96b5a Apply all the recent performance improvements
This updates livesplit-core which brings a variety of performance
improvements:

- The Layout State is now being reused and thus most frames don't
  require any heap allocations anymore. However we still serialize
  everything over into a JSON string for now, which puts a lot of
  garbage on the JS heap.
  https://github.com/LiveSplit/livesplit-core/pull/334

- The frequent performance.now() calls we do, first lookup up the window
  and performance object every time. This tripled the amount of calls we
  do over into JavaScript, with each call into JavaScript being quite
  expensive in Chrome.
  https://github.com/LiveSplit/livesplit-core/pull/335

- By introducing a timer snapshot mechanism we further reduce the calls
  to performance.now() to a single time.
  https://github.com/LiveSplit/livesplit-core/pull/339

- Rust 1.44 regressed the performance of 128-bit integer multiplications
  by accident. Those are used for hashing the comparisons when looking
  up the times for a comparison, which is something we do very
  frequently. We however don't have many comparisons, so a simple Vec
  that we loop through is a bit faster, even in native code, and quite a
  bit faster in the web, because of the Rust 1.44 regression.
  https://github.com/LiveSplit/livesplit-core/pull/338

- We delay registering the Gamepad Hook Interval until the first gamepad
  button is registered. Most people won't use a gamepad, so the interval
  just waits cpu time for no reason.
  https://github.com/LiveSplit/livesplit-core/pull/340
2020-06-14 15:27:01 +02:00
2016-12-29 20:07:06 +01:00
2019-12-27 15:00:28 +01:00

LiveSplit LiveSplit One

Build Status

LiveSplit One is a version of LiveSplit that uses the multiplatform livesplit-core library and web technologies like React to create a new LiveSplit experience that works on a lot of different platforms.

The web version of LiveSplit One is available here.

Build Instructions

In order to build LiveSplit One, you need to install npm and the Rust compiler. Make sure to recursively clone the repository so that all git submodules are cloned as well:

git clone --recursive

Once you have cloned the repository and set up both npm and the Rust compiler, you need to install the WebAssembly target:

rustup target add wasm32-unknown-unknown

You also need to build wasm-bindgen:

cargo install wasm-bindgen-cli

You need to set up some npm modules before compiling the project:

npm install

You are now ready to build livesplit-core, which powers LiveSplit One:

npm run build:core

Now you can build and host LiveSplit One:

npm run start

A browser tab with LiveSplit One should now open. Alternatively, you can use npm run serve to just host it without opening a browser tab.

Browser Support

Browser Compatibility Known Issues
Chrome ≥57 GitHub issues by-label
Firefox ≥52 GitHub issues by-label
Edge ≥79 GitHub issues by-label
Safari ≥11
Opera ≥44 GitHub issues by-label
iOS ≥11.2 GitHub issues by-label
Android WebView ≥62 GitHub issues by-label
Chrome Android ≥66 GitHub issues by-label
Firefox Android ≥60 GitHub issues by-label
Internet Explorer Unsupported
Opera Mini Unsupported
S
Description
A version of LiveSplit that works on a lot of platforms.
Readme MIT
15 MiB
Languages
TypeScript 85.7%
SCSS 7.5%
JavaScript 3.1%
Rust 3%
CSS 0.4%
Other 0.3%