[AccessD] Array faster in DLL?

Gustav Brock Gustav at cactus.dk
Mon Oct 31 05:56:30 CST 2005


Hi Shamil

Oh my ... could you create a DLL with the essentials from your ArrayTimeLocal skipping the console parts? It just need to return the lngSeconds.

Looks like I need some C++ stuff for this project!

/gustav

>>> shamil at users.mns.ru 31-10-2005 12:17:09 >>>
Gustav,

And finally here is managed C++, which runs instantaneously:

#include "stdafx.h"

#using <mscorlib.dll>
#using <Microsoft.VisualBasic.dll>

using namespace System;

static long ArrayTimeLocal(long lngLoopMax, long& lngTotalCnt);
int _tmain()
{
 long lngTotalCnt = 0;
 long lngResult = 0;

 lngResult = ArrayTimeLocal(1000000, lngTotalCnt);
 Console::WriteLine(String::Format(
  S"Final Result = {0:#,##0}, Final Counter = {1:#,##0}",
  __box(lngResult), __box(lngTotalCnt)));
}

static long ArrayTimeLocal(long lngLoopMax, long& lngTotalCnt) {
 const long lngItems = 100;
 long alngTmp[lngItems-1][2];
 long lngLoop;
 long lngItem;
 long lngResult=0;
 double dblStart;
 double dblStop;
 long lngSeconds;

 Console::WriteLine("Array looping test started...");
 dblStart = Microsoft::VisualBasic::DateAndTime::Timer;
 lngTotalCnt = 0;
 for (lngLoop=0; lngLoop < lngLoopMax; lngLoop++) {
  for (lngItem=0; lngItem < lngItems; lngItem++) {
   alngTmp[lngItem][0] = lngLoop * 10;
   if (alngTmp[lngItem][0] / 10 == 100) lngResult = 1;
   else lngResult = 0;
   lngTotalCnt++;
  }
 }
 dblStop = Microsoft::VisualBasic::DateAndTime::Timer;
 Console::WriteLine("Array looping test ended.");
 lngSeconds = (long)(dblStop - dblStart);
 return lngSeconds;
}

Output
---------
Array looping test started...
Array looping test ended.
Final Result = 0, Final Counter = 100,000,000

And it takes ~18 seconds on my PC to run this test ADDITIONALLY looped 100
times....

Shamil





More information about the AccessD mailing list