Version 3.2 beta 2 improvements, part 1
The feedback from our 3.2 beta has been overwhelming, and the response so far has been all positive. After the first beta release has been out for a week, we’ve committed tons of bugfixes, tweaks and minor improvements polishing a lot of rough edges and fixing issues that popped up as soon as we got some real-world testing. Thanks a lot!
One of our users posted up a performance analysis earlier today (http://www.synet.sk/php/en/890-tbg-the-buggenie-issue-tracker-performance-analyze), where some of the points made much sense and were items that were long overdue for improvements. Some of the points brought up won’t be addressed for various reasons, but there were also some that we immediately fixed:
Poor B2DB cache performance
As was thoroughly explained in the analysis, the b2db cache performance was far, far from optimal – in many cases the disk I/O can cause significant strain on the system. Further analysis on our own part also revealed even more problems with the existing cache implementation, leading to an immediate rewrite of the caching system. The existing b2db cache would actually re-read the cache files every time a cached property was being accessed, and the caching would only happen “on-demand”, leading to random caching, heavy I/O operations and relatively poor performance (for a cache).
We rewrote the cache so we now generate a complete class cache whenever the class is being accessed for the first time. This class cache is saved to disk and only read once per request for later requests. In addition, we don’t do a full backwrite of the entire cache on each request. Total win. Next!
Loading external resources
The amount of resources loaded from external servers, as well as the potential problems when loading files from external locations (corporate setups) was also brought up as an issue in the analysis. To address the issues mentioned, we’ve moved from loading the custom fonts from googles servers to hosting them inside The Bug Genie (this is also reflected in updated licensing information). This will both lead to improved loading times and less reliance on external resources.
Gravatars can be turned off in system settings, so that point will not be addressed.
GeSHi loading causes slowdowns
The way GeSHi (the syntax highlighting library) is being loaded causes unnecessary waiting and loading time. This has been rewritten so it’s now only loaded on demand, and loaded lighter than before. Win!
Inconsistent measuring of execution time
The way we render and generate the log items in <=3.2 beta1 makes the log less useful for actual timing analysis than for a general impression of how long it takes to render a complete page, as well as providing important inside information on execution. However, because the log and debug information needs to be generated and rendered early in the execution stack, we miss out on things going on after the page is rendered, and that can often mean that the log is incomplete and can appear to have “holes”. We’ve completely rewritten the way we generate and present the debug and log information so it is now loaded dynamically after the page has rendered completely. In addition to this, we can now load debug information for any ajax request made on the page after it has been loaded, providing even better profiling and debugging tools for module developers as well as users looking for insight into how The Bug Genie works.
Please keep in mind that this is a debugging tool for The Bug Genie development and it is not supposed to be a precision tool for profiling or timing information. However, we always want our tools to produce accurate information and be valuable. Again, win!
We’ve improved database indexes, and will continue to improve them even more in the future, after our database layer gained improved indexing features very recently. We’ll continue to improve caching and general performance as this is really important to us.
Points that will not be addressed
PHP 5.2-compatibility – This is an item that is brought up repeatedly (although less now than before). We will not make The Bug Genie php 5.2-compatible. PHP 5.2 is old, insecure and performs far worse than php 5.3. Please – update your servers.
PCRE 7.x-compatibility – Same as above, we will not make an effort to support PCRE 7.x. PCRE 8.0 was released October, 2009, and can hardly be called “new”. We realize that there are problems with this library on CentOS and RHEL-installations, but even when running these older server OSes, virtualization is still an option.”
We very much appreciate detailed reports like this – it is really valuable to us. We’re a small team with very limited resources, so all help is appreciated.