Deveopment environment: Microsoft Visual C++ 6
Develop a Microsoft VC++ ActiveX DLL that exposes one class with two methods.
STDMETHODIMP CMyClass::putArray(VARIANT myArray)
This function receives a two dimensional Visual Basic array of doubles, and stores it in a private variable. myArray is a MXN array. The size of the array (M and N) is unknown, therefore the C++ code must dynamically allocate memory when the arrays are received. But the size of the arrays will be in the order of 1000s of elements, therefore special consideration must be taken when choosing the data type to optimize performance.
STDMETHODIMP CMyClass::sumElements(double * d)
Returns the result of adding up all elements in the array.
The Visual Basic code that will be used to call this C++ DLL, and measure the performance is as follows:
Dim MyCppClass as new [url removed, login to view]
Dim i As Integer, j As Integer
Dim v() As Double
ReDim v(0 To M, 0 To N)
For i = 0 To M
For j = 0 To N
v(i, j) = Rnd
Dim dStartTime as double, dTotalTime as double
dim d as double
dStartTime = Timer
[url removed, login to view] v
[url removed, login to view] d
dTotalTime = Timer - dStartTime
This functions are needed as part of a large VC++ development project. The functions must be very robust (i.e. no memory leaks, etc) and have the best performance possible (hopefully close to the performance of matrix operations in Matlab). The code must also be neat and with comments.
The main aim of submitting this very simple project to this site is to identify an excellent C++ programmer that we can use to outsource parts of this project.
If you consider yourself an excellent C++ programmer, but don't have lots of rankings, you can increase your chances of getting the project by sending us the compiled DLL before the deadline. We will test the performance of your DLL using the above code, and we will select the winner based on the performance of the DLL. The winner will receive payment in exchange for the Microsoft Visual C++ project source code. Alternatively, you can send us a *short* description of how you would go about implementing the above to achieve a robust and fast performance.
If we don't receive any compiled DLLs, we will assign the project to a Service Provider based on price and rankings.