Performance, Tuning, and Optimisation
I specialise in the development of high-speed software, algorithms, databases, protocols, and web applications. Whether you are developing a new application or want to speed up your existing one, if you need it to be fast - I can help.
- Is your software, database, or web site too slow?
- Are you losing customers because your web site isn't responding fast enough to visitors?
- Are your staff being unproductive because they are forced to wait for slow software to do its thing?
- Do you simply want the prestige of your systems being faster than your competitors'?
- Are you fed up of buying expensive, powerful hardware because your software can't keep up?
- Have you had enough of your contractors or consultancy company costing you lots of money but failing to improve anything?
Slow software is irritating and costs money: it's bad for productivity, loses customers, and forces you to buy expensive hardware that you wouldn't need if your code were more efficient.
No Improvement, No Fee
I am so keen to get my hands on your software to make it run faster, that I offer a complete guarantee: if I cannot improve the performance of your application by at least 10%, you pay nothing.
From single scripts or SQL queries, to entire complex message-passing systems, irrespective of whether you have a known issue or you just want your system to be faster, if I can't speed it up then there's no fee.
The investigation and analysis is free, the cost is fixed, and the result guaranteed - so you literally have nothing to lose.
Design and Development
If you are starting a new development project then I can help make your application lightning-fast. With a mixture of experience and best practices, you can be sure that your system will be as efficient as possible.
- Systems architecture design - from embedded to enterprise
- Creation of efficient algorithms and protocols
- Developing fast, efficient code
- Optimising applications or web sites to ensure a fast user experience
- Designing and developing optimised databases for high-speed data storage and retrieval
For larger projects I can save you money by just developing the performance-critical components, leaving your existing developer base to continue with the non-performance-critical parts.
I am skilled at identifying and resolving performance problems with existing software.
Some performance issues are easy to find - it is just one part of a system that is causing the problem. Others, however, are more trickly. It may be that there is not just one component at fault, but the interaction between many different parts that is causing the problem. These situations are harder to diagnose and resolve.
Not only do I have experience and skill of dealing with individual technologies, but I can help you to solve performance issues with systems as a whole. Don't forget - troubleshooting work is covered by the "no improvement, no fee" guarantee, so there's no reason not to get in touch.
Whatever your requirement, I can help you achieve the best performance using any of the following:
- Java: core, J2SE, J2ME.
- Relational databases: design, indexing, SQL, on-line transaction processing (OLTP), decision support (DSS), data warehousing, database applications.
- Microsoft SQL Server, Sybase, MySQL etc.
- UNIX (Solaris, HP-UX, Linux) development: C, Shell, Perl, AWK, etc.
- Inter-process communication (IPC) and networking (TCP, UDP).
- Architectures: client-server / request-response, N-tier, single- / multi-threaded, message-passing / asynchronous etc.
- Mobile application architectures.
- Algorithms: design and implementation
- Protocols and protocol design.
- Resource-constrained systems, e.g. embedded systems.
I undertake all sizes of application, from single scripts or database queries, to full multi-tier systems.
Here are some of the more notable performance improvements I have delivered:
- A traffic route report for a telecommunications company, from 5 days (yes days!) to 5 hours.
- A trade union subscription calculation application for a data processing company, from 35 to 3.5 hours.
- A database stored procedure used in the final stage of an e-commerce application, for a postal services organisation, from 45 to 0.5 seconds.
- A batch load process for a marketing system, from 55 to 2000 records/second.
In addition, some applications developed by me from scratch include:
- An intra-day tick storage database for replaying index values, capable of storing over 27,000 ticks/second on a single processor development system.
- An embedded web server running on a single 800 MHz processor, capable of processing over 4,000 requests/second.