Multiple C# Console Applications Calling Custom IPP DLL

Multiple C# Console Applications Calling Custom IPP DLL


I have compiled a custom IPP 7.0 DLL (written with MSVS 2010 C++) and I have also compiled a C# console application. This C# console application will call the functions in the custom IPP DLL.

The whole processing of the console application is as follow:

  1. Read data from some files
  2. Call the functions to operate on those data.
  3. Repeat step 1 and 2 for N times (the data for each iteration are different).

At the start of the console application, i will specify a processor core (Intel Xeon W3565 6-core) in which the console application will be running in. 

The 1st scenario is that I will run 1 instance of the console application, running in one processor core. I will time the execution of the functions and add them up to get the total execution time.

The 2nd scenario is that i will run (n - 1) instances of the console applications, each running in a different processor core. I will also time the execution of the function and add them up to get the total execution time per console application.

I expect the timings for both scenario should be similar, but the 2nd scenario had a much longer execution time.

Could you advise what could be the possible reasons for these timings?


4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.


do you have using some performance profiling tools to check the run time? like Intel Vtune Amplifier.

Just guess, at 2 nd scenario , the bottleneck of performance may be the step 1. Read data from files, which may be serial and complete memory operation between cores?

Best Regards,


I only have IPP standalone. The execution timings exclude the time taken from reading data from files.

How I get the timings is as follow:
1) There is, say 100 files in a directory.
2) I will read data from 1 file first and allocate them in the respective arrays in the C# console.
3) I will then call a function in the custom DLL to operate on the arrays and I will time the execution of that function.
4) I will then repeat step 1 to 3 to get the individual execution timing and add all of them and divide by 100 to get the average execution timing.

In scenario 2, all the console applications, running in the different cores, will operate in the same manner.

So the bottleneck of performance is still memory operation?


I can't say exact reason. . Could you provide me a small test case which can reproduce the problem?

Best Regards,

Leave a Comment

Please sign in to add a comment. Not a member? Join today