Upcoming Events


Quick Stats
3902 people currently visiting GDNet.
2236 articles in the reference section.

Help us fight cancer!
Join SETI Team GDNet!



Link to us

  search:   

Development of Resource-intensive Applications in Visual C++


Provide yourself with good hardware

So, you decided to use parallelism and 64-bit technologies in your program developments. Perfect. So, let’s at first touch upon some organizational questions.

Despite that you have to face the development of complex programs processing large data sizes, still the company management often doesn’t understand the necessity of providing the developers with the most high-performance computers. Although your applications may be intended for high-performance workstations, you are likely to test and debug them on your own machine. Of course all programmers need high-performance computers even if their programs don’t process many GB of data. All have to compile them, launch heavy auxiliary tools and so on. But only a developer of resource-intensive software can feel deeply all the troubles caused by the lack of RAM memory or slow speed of the disk subsystem.

Show this part of the article to your manager. Now we’ll try to explain why it is profitable to invest money into your tools – computers.

This may sound trivial but a fast processor and a fast disk subsystem may speed up the process of applications’ compilation greatly! It seems to you that there is no difference between two minutes and one minute of compilation of some part of the code, doesn’t it? The difference is enormous! Minutes turn out into hours, days, months. Ask your programmers to count how much time they spend awaiting the code compilation. Divide this time at least by 1.5 and then you can calculate how quickly the investment into the new machinery will be repaid. I assure you that you will be amused.

Keep in mind one more effect which will help you to save working time. If some action takes 5 minutes one will wait. If it is 10 minutes one will go to make coffee, read forums or play ping-pong, what will take more than 10 minutes! And not because he is an idler or wants coffee very much – he will be just bored. Don’t let the action be interrupted: push the button – get the result. Make it so that those processes which took 10 minutes take less than 5 now.

I want you once again to pay your attention that the aim is not to occupy a programmer with a useful task in his leisure-time but to speed up all the processes in general. Installation of a second computer (dual-processor system) with the purpose that the programmer will switch over to other tasks while waiting is wrong at all. A programmer’s labor is not that of a street cleaner, who can clear a bench from snow during a break while breaking ice. A programmer’s labor needs concentration on the task and keeping in mind a lot of its elements. Don’t try to switch over a programmer (this try will be useless), try to make it so that he could continue to solve the task he’s working at as soon as possible. According to the article “Stresses of multitask work: how to fight them” [2] to go deeply into some other task or an interrupted one a person needs 25 minutes. If you don’t provide continuity of the process, half the time will be wasted on this very switching over. It doesn’t matter what it is – playing ping-pong or searching for an error in another program.

Don’t spare money to buy some more GB of memory. This purchase will be repaid after several steps of debugging a program allocating large memory size. Be aware that lack of RAM memory causes swapping and can slow down the process of debugging from minutes to hours.

Don’t spare money to provide the machine with RAID subsystem. Not to be a theorist, here you are an example from our own experience (table 2).

Configuration (pay attention to RAID) Time of building of an average project using large number of exterior libraries.
AMD Athlon(tm) 64 X2 Dual Core Processor 3800+, 2 GB of RAM,2 x 250Gb HDD SATA - RAID 0 95 minutes
AMD Athlon(tm) 64 X2 Dual Core Processor 4000+, 4 GB of RAM,500 Gb HDD SATA (No RAID) 140 minutes
Table 2. An example of how RAID influences the speed of an application’s building.

Dear managers! Trust me that economizing on hardware is compensated by delays of programmers’ work. Such companies as Microsoft provide the developers with latest models of hardware not because of generosity and wastefulness. They do count their money and their example shouldn’t be ignored.

At this point the part of the article devoted to managers is over, and we would like to address again creators of program solutions. Do demand for the equipment you consider to be necessary for you. Don’t be shy, after all your manager is likely just not to understand that it is profitable for everybody. You should enlighten him. Moreover, in case the plan isn’t fulfilled it is you who will seem to be guilty. It is easier to get new machinery than try to explain on what you waste your time. Imagine yourself how can your excuse why you have been correcting only one error all the day long sound: “It’s a very large project. I launched the debugger, had to wait very long. And I have only one GB of memory. I can’t work at anything else simultaneously. Windows began to swap. Found an error, corrected it, but I have to launch and check it again…”. Perhaps, your manager won’t say anything but will consider you just an idler. Don’t allow this.

Your major task while developing a resource-intensive application is not projecting a new system and even not the study of theory, this task is to demand to buy all the necessary hardware and software in good time. Only after that you may begin to develop resource-intensive program solutions efficiently. It is impossible to write and check parallel programs without multicore processors. And it is impossible to write a system for processing large data sizes without necessary RAM memory size.

Before we switch over to the next topic, we would like to share some ideas with you which will help you to make your work more comfortable.

You may try to solve the problem of slow building of a project by using special tools of parallel building of a system similar, for example, to IncrediBuild by Xoreax Software (http://www.xoreax.com). Of course, there are other similar systems which may be found in the Web.

The problem of testing applications with large data arrays (launch of test packs) for which usual machines are not productive enough, may be solved by using several special high-performance machines with remote access. Such an example of remote access is Remote Desktop or X-Win. Usually simultaneous test launches are carried out only by few developers. And for a group of 5-7 developers 2 dedicated high-performance machines are quite enough. It won’t be the most convenient solution but it will be rather saving in comparison to providing every developer with such workstations.





Page 3


Contents
  Introduction
  Page 1
  Page 2
  Page 3
  Page 4
  Page 5
  Conclusion

  Printable version
  Discuss this article