
Fat applicationsThis article talks about the problems inherent in designing 'kitchen sink' applications offering unnecessary functionality. Every new generation of the computers that we use get faster and has more memory. This enables the companies that develop the software that runs on them to offer yet more features with every new version that comes to market. However every design decision can have drawbacks and fat applications are one of the consequences of piling yet more featues onto an existing application. What is a fat application? You probably have a few on your hard disk right now. Applications that are so large and complex it takes forever to start, you can't find that essential feature you need and it hogs memory and hard disk space, slowing your system to a crawl. Why bigger applications are slowerPlease note that this explanation is considerably simplified and ignores many other possible causes of slow execution. In general, a larger piece of program code will take longer to execute than a smaller piece. The reasons for this are simple; a single microprocessor can only execute a fixed number of program instructions in any time period so the more program instructions there are the longer your application takes to perform a task. Modern microprocessors can execute instructions much faster than they can read them from memory and to reduce delays caused by waiting for the data from memory they use a smaller, faster memory area called a cache to store frequently used instructions. The microprocessor will search for an instruction in the cache first and only read it from main memory if it does not exist in the cache. Smaller applications can store a larger proportion of their program code in the cache and obtain a greater performance boost than a larger application. GraphicsThe days when most computers were driven using the keyboard and command line applications are long gone and applications are becoming more graphical. This has an associated cost. As an example a 24-bit colour icon 32 x 32 pixels in size is over 3 kilobytes in size and a 24-bit 1024 x 768 picture is over 2 megabytes unless compressed in some way which would mean extra time processing before display of the graphics. EclipseAn Integrated Development Environment (IDE) is a tool to help develop new software that provides source code editing and other facilities in a single environment. A popular open source IDE is Eclipse, originally developed by IBM and that, to my mind, is a classic 'kitchen sink'1 application. Eclipse is Java-based and designed as an open development platform that can be extended to support any required functionality. The problems with Eclipse are twofold; firstly because Eclipse is very large and complex starting Eclipse takes a non-trivial amount of time. This means that you would not use it as an editor to edit a single source file thus you have to resort to using two applications (Eclipse and a simpler, faster editor) and switching between them as required which will result in lower programming productivity. The second problem is that because of the extendable nature of Eclipse and the myriad of features it offers the learning curve is very steep before a new user can use it productively. Eclipse is not unique in having these issues as IDEs in general are larger and slower than ever before. 1: for those not familiar with the expression the phrase 'everything but the kitchen sink' is a way of describing something with an overwhelming amount of features. | |