Well, it's very funny, but I would like to make things clear by the gurus' help here.

We are running a test program with two different versions. One (says A) is supposed to be quicker than another one (says B).

It's actually the same application just with improvement, so we can know that all architecture are the same in this case.

This application will load an Engine.dll, which is exactly the same place that gets improvement.

Here comes the problem.

While we run A directly, then it's very quick as we expect.

When we run B in the first step, it's much slower then. However, if we terminate the B, and then run A, then A is very slow also.

The way we do testing is put the two versions under two different folders, like FolderA and FolderB.

The only way we can think of that cause this problem is the slower DLL is still in the memory although we did terminate B.

From the basic concept of DLL, we know that DLL will no longer in memory if no application is still running it. However, in our testing, it seems it will still be in memory?

The Engine.dll is under FolderA and FolderB, not in any system folder.

And we are testing in in a portable WinCE/mobile device.