Tiny delphi things that improve performance

It's always a good idea to go back over old (2-5 year) code and re-apply things you've learned, or just didn't bother with at the time.

And similarily I've gone back and started adding some improvements to Dragon Tavern Logger, a small personal project which you can download for free. If you just want to play the game you can use the same tool, or just use your browser to visit the link and create a character, or two, or three,. heck you can make up to 20 if you felt like it.

The latest version of the tool currently available is v 1.0.9, which was released about two years back. The game was paused, devs mostly abandoned it, but the community lives on still. And it's a pretty laid back casual game you can play in between whatever else you may be doing.

Version 1.1.0 that's "in the works" and has a few fixes and speed improvements already commited to the bitbucket link above will show some significantly improved loading and refresh speeds.

For the nitty gritty coders among you readers, the following improvements were done:
- BeginUpdate / EndUpdate was added to all listviews. Especially the analyze dialog will benefit from this as the number of drawing updates will be cut to just once per update instead of once per item per update.
- TWebBrowser's "outerHTML" was being copied from the web browser several times per parsing, now just once. This doubled the speed of said parsing. It was just ~20 ms before, but now it's down to ~10ms.
- The OnDocumentComplete event is fired multiple times per page. I added some code that ensured it was only handled once, instead of checked each event. This ensured the amount of checks for the inventory loading (cube) went down from about 3-4 times to just 1 check, and the same for exploring. This was the most significant improvement after the begin/end update.

There's quite a few ideas that could still be implemented. Such as using TChromium, Threads, ShortStrings and more. But, one thing at a time.


Post a Comment