Massive speedup to loading times

← back

Using a new data format for your analyzed demos, we have managed to significantly reduce the loading times for the positions tab. Furthermore, the memory usage has been reduced so you can compare many more rounds!

# A 15x speedup

Today we released a new update that changes the format of the data for the positions visualizations which results in some very significant speed-ups. The new update results in the positions tab loading up to 15 times faster!

# Less memory usage

The new data format uses far less memory than the old. That means you can now easily compare 100+ rounds without any issues. Before, your computer would probably begin to crumble if you picked more than 60 rounds.

# More to come

In the coming time, we will update the data format for the other visualizations as well so you can switch between the visualizations more seamlessly. And we still have some tricks up our sleeves after that.

# How we did it (Technical section)

All the benefits comes from switching from JSON to FlatBuffers for the data send to your browser.

JSON is a text-based format whereas FlatBuffers is a binary format (1's and 0's). There are many differences between the two formats but the most important ones for our decision to change were:

  1. FlatBuffers are more compact - it reduced the file size to 1/3 of the equivalent JSON file for our positions data.
  2. FlatBuffers data can be accessed without parsing - the bulk of time loading our JSON file was not from network, it came from JSON parsing. To parse JSON, you need to read the entire file from start to finish. That takes exponentially more time the bigger the file is.

Without going into too much details, changing to FlatBuffers also demands a change in how we read the data. For example, we had to rewrite the logic generating the heatmap.

Let us give you some numbers from our quasi-scientific experiments. The numbers should be seen relative to each other and not as standing alone - they were measured in a development environment. We picked 30 rounds and clicked the positions tab.

# Loading time for 30 rounds

  • FlatBuffers with cache: 0.6s
  • FlatBuffers without cache: 1.6s
  • JSON with cache: 6s
  • JSON thout cache: 24s

Caching is a new feature we released a week ago. It kicks in when you once have loaded the positions tab and then navigate back at some later point. In that case, we do not fetch the data from our servers since they are already cached on your computer.

Noesis heatmap

Upload & review CS:GO demos!

doneUpload and analyze a demo in less than 1 minute
done2D demo viewer
doneAnalyze utility, movement, and kills
Try for free!