Don't Carry The Fat Man On Your Run: Profiling For Better Performance
It has been quite a while since we got the fat man off our application. In fact some of us, myself included, forgot who he was. Our system was running fine for long periods of time. Over time the customer added new features, ownership of the code has changed, as has the platform on which application is run. Lots of functionality has been added with just a little bit removed and overall the system isn't quite as responsive as it was. But that is ok, it does way more stuff so we expect that. There may be a bad algorithm, the service startup order might be non-optimal or Wait a minute! Who are you, how did you get in here and why are we carrying you around with us? That sneaky fat man, he and his friends had snuck back on. No wonder the application was running slowly, no application can run well carrying that kind of dead weight. Experience shows us time and time again that the performance problems are not where we expect them to be. Those algorithms may never even show up, and some random convenience code block will be at the top of the list. Join me as we expose the fat man and his friends in a real world embedded Java/OSGi application and remove them to run on a tightly constrained system. This talk will be part experience report, part best practices, part concrete example, all fun!