I am developing a 32-bit Windows application using Delphi XE3
I have a section code that carries out detailed computation that needs speeding up and can be run in multiple threads
I have designed it so that there is no need to use Mutex's or Critical Sections to control access while the individual threads run.
I make no attempt to set affinity or suggest ideal processor to use
The analysis takes about 1 minute in a single thread
The analysis takes about 40 seconds using multiple threads using all 6 available cores - i was expecting closer to 15-20 seconds (accepting some performance loss as inevitable)
Looking at the CPU performance .. the application does not seem to be using the full 6 cores.
If I replace the analysis code with a simple loop counter to burn CPU time I see full core usage .. and close to 6x speed improvement
So I suspect there is something in the analysis code that is causing threads to wait for each other.
The analysis does make extensive use of lists and creates new objects to put in these lists.
Are there implicit mutex/critical section issues associated with object creation/memory usage that might explain the lack of performance ?
Are there any good tips that might help unlock this performance issue?
Many thanks in anticipation for your thoughts/help
With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…