Software Acceleration

Software is nothing more than a series of instructions. There are thus two ways to make the instructions run faster:

  • Faster hardware, whether it's a faster CPU, more memory, solid-state disks, or a faster network, or
  • Faster software.

If you're reading this, you've probably already bought better hardware and found it just isn't enough, so let's talk about what can be done with software.

The most obvious thing to do with software is to look at where the time is spent using the current software, and to make this run faster. This can usually produce 50% improvements in throughput per second, and, if one is obsessive, perhaps up to 3x improvement in performance by using every possible optimisation.

However, if you really want to speed up, you will usually need to tackle the problem in a completely different way. Let's see some examples to illustrate the point.

a. Finding a phone number.

It should take a person under a minute to find a phone number using a phonebook and a name and address. Suppose that the task was reversed and they needed to find the name and address from the phone number- it would obviously take days. Sometimes, computer programs are written in a similar way and the best approach is to do something radical, such as store the data in a different order, or to build an index to allow you to find it.

b. Sorting data.

if you have a list of information (eg names), there are lots of ways to sort the data. One way is called a "bubble sort", where the computer looks through the list, moving the largest item to the end of the list. If there are 'n' items in the list, going through the list once will require 'n-1' comparisons and typically (n-1)/2 swaps... but this will only move 1 item. To fully sort a list of n items will require going through the list (n-1) times, so it will take n(n-1) comparisons to be sure the list is fully sorted. (You can reduce this by half with a bit of logic). So, sorting a list of a million items would require a million million comparisons, which would be slow!

Alternatively, there is an approach called "QuickSort" that is based on sorting a big list into two halves, then sub-sorting the halves. This would sort a million items in just 20 million comparisons, which is 50,000 times faster than using bubble sort.

Why does software need this kind of help? Usually because it was written and tested using small volumes of data. For example, to look through a list of 10 names for a match would take up to 10 checks. But if you have a million names, not only would each search take longer but it is highly likely that lots of people would be doing the same thing at the same time, making the whole process run very slowly indeed.

So, is your software slow? Are you unable to work efficiently because you keep waiting for your software? Call us on 0115-840-5500 to see how we can help you.


© 2020 Datatechnologies. All Rights Reserved.