Home FAQs General FAQ Will it run faster if I do it myself?

Will it run faster if I do it myself?

E-mail Print PDF
User Rating: / 0
PoorBest 

You can nearly always make any program run faster if you have the time, knowledge, and experience, but you have to ask yourself:

What is the "it" I am going to do myself?

What is it that Diamond does that you are going to do yourself because you think you can get a faster result?

  • Is it loading all the processors? Do you know how to arrange that large sections of initialisation code do not waste valuable memory? Diamond does.

  • Is it device drivers? Diamond's device drivers been highly optimised over many years of working directly with the manufacturers and incorporate many non-obvious techniques that have proved to improve throughput.

  • Is it the kernel? The Diamond kernel has been written by experts with many years experience in maximising performance and optimising code. It is under constant scrutiny to find any places where improvement is possible. That said, in the vast majority of real applications, most of the CPU time is be spent in user algorithms and not in any code provided by Diamond.

Why do I think I can make it run faster than using Diamond?

Performance comes from using the best algorithms. Often the actual implementation of those algorithms has little effect on performance. For example, no matter how tightly you code a bubble sort, even in assembler, it isn't going to out-perform a simple implementation of quicksort on a reasonable number of data. If you have the best algorithm, where do you think your "faster" is going to come from? What part of Diamond do you know is inefficient? Are you certain?

  • Will it be worth it? Is any improvement I might get going to be worth the considerable time and effort I will have to spend to do everything myself when Diamond can do much of the work automatically?

  • Am I prepared to lose flexibility? "Doing it yourself" often translates to hoping for some speed improvement at the likely cost of making your code more obscure and building in assumptions about the processors, topology, and general requirements of the application. If you write another application on the same hardware or move the current one to different hardware, you'll probably have to repeat significant parts of the development.

 

Try Diamond Now!

DemoSystem1

Did You Know?

When you connect tasks with channels, Diamond doesn't care if the tasks are on DSPs or FPGAs.