
Building Block Software provides Java Performance and Optimization Services for most types of Java development efforts. Whether you are doing Servlet work, application work, you are writing specialized frameworks or any other Java based software, we can help with your performance needs. We also provide general Software Architectural consulting and guidance.
We have three basic strategies for helping your team. The first is for those projects that are at the beginning, or close to the beginning of the development cycle. The second is for those projects that are closer to the end of product development. The third involes us working with your team using statistical analysis to optimally adjust as many of the System and Java parameters, that externally effect performance.
If you are in the beginning stages of development, or at a point where a refactor could benefit your project, our Patterns for Optimization program is a great way to begin. This program describes the patterns your team can use to allow for better optimization during the project's whole life cycle. This gives you a basis for developing your project that can be more easily tuned from a perfromance stand point The outcome typically involves a solid, dynamic architecture that is tuned for better growth and reaction to your market's current and future feature needs as well. We feel that an architecture, designed to react to real world performance requirements, can also react favorably to new feature needs. We try to revolve the Patterns for Optimization around your current working processes. But if necessary, we can work with you to create a better process, if you so choose.
The second program, Performance Fire Fighting, is more for those projects that are well on their way to being completed, but have perfromance issues that need to be addressed. Usually, this means an analysis needs to be done to assess the situation and some measuements on the software need to be taken. We will then recomend a number of strategies to help you overcome your performance bottlenecks. This usually takes a few turns, as a mature software project generally has a few hidden aspects that can not be easily seen from looking at its veneer. In fact, most optimizations will relieve one bottleneck allowing us to find the next. This can go on until you are satisfied that your goals are met. Sometimes the suggestions are easy to implement, whereas sometimes a larger refactoring may be in order. We will work with you along the way to make sure you understand what we are suggesting and why.
The third program, Statistical Performance Maneuvers, is generally the last step in optimizing a product. It is designed to eak out the last bit of performance, smooth out the software's performance curves, or minimize garbage collection hang times. Though once in a while it may also allow us to help you find other performance strategies to help your application. This program involves having the assistance of our statistitian to help determine, statistically, what the best run time Java switches to apply and any other system parameters that can be tweaked to advantage your software in its native environment.
With the exception of the presentations, which need to be done at your facility, all of our programs can be done on-site, remotely from our offices, or a mixture of the two. We provide as much or as little consulting as you want or need. We can describe the basics to give you a direction, work with you on starting your design or work with you through the whole product life cycle. We usually suggest an iterative software development effort, but can fit our program to the way your team is used to working.
Please let us know if you would like to be a case study in our up and coming book on the subject of "Java Performance and Optimization Techniques".
Contact us at JavaPerf@BuildingBlockSoftware.com for any questions or to discuss your situation. You can also call us at 585-787-0045, if you would prefer to talk to someone directly. See our Contacts page for more ways to reach us.
