Speed improvements in release v1.3.7

Today I released all changes I have done to the code since the last release in Januari.

Infohub is much faster now on all browsers. It has been a bit sluggish on Firefox and faster on Brave. But now Firefox render faster than Brave. This is what I have done:

Storage

The storage plugins on the client uses the same flexible system as on the server. You can attach any kind of storage engine just like on the server. Problem is that the browsers only have indexedDb as a storage engine. And on top of that I only use the code for idbkeyval to store the data.

Instead of three layers of plugins I reduced them to one layer. That reduces the number of calls and makes the read/write faster.

I also added a memory cache. If you read data it comes into the memory cache. If you read again you get the data from the memory. Writing data updates the memory cache. This improve read/write speeds.

Expensive cloning

In Javascript all objects are passed by reference. I want to pass them as by value. That means I use _ByVal to copy the object. The _ByVal is an expensive function that takes time and makes the browser work hard. By reviewing the code I have reduced the number of _ByVal where it its possible. Checked with the performance tab in the browser. It is much faster now and less strained.

Unneccessary responses

When sending messages with a sort tail you do not always care about the response. I have investigated where I use short tail messages and what answers I simply throw away. Those messages get step_void. That means there will be no answer at all. Fire and forget. Less strain on the browser gives a speed improvement.

Faster plugin start

By starting plugins and see if they immediately ask for more plugins I could see that some plugins could be started faster if they got the missing plugins mentioned in their launcher.json

These plugins now start taster

  • infohub_demo
  • infohub_doc
  • infohub_login
  • infohub_tools

Render full list

In the launcher you can switch to the full list and refresh it. Previously it asked the server for the full list and then checked what assets were missing.

Now this has changed. If the server notice that you have not provided a checksum for your current list then you get the assets in the same response. The assets are saved and the rendering begin immediately.

The progress animation – the ball that goes to left and right – had to bounch 32 times in the beginning. With the speed improvements mentioned above it was down to 18 then 14. With the above fix the list is rendered on 9 bounches on Brave, and on 5 bounches on Firefix. That is improvement!!

Version 1.3.7

You can see the details here

https://github.com/peterlembke/infohub/releases/tag/v1.3.7