Initializing ArcEngine, make it faster?

I am currently working on a C ++ / COM project using ArcEngine (from ESRI). Apart from the fact that there is practically no support in terms of documentation (there is an SDK there). Anyway, I am wondering if anyone has any experience in speeding up the ArcEngine initialization process. Right now it takes 30-35 seconds to initialize the engine. We will now launch several of these applications. Does anyone have experience with this?

This is a very scary and odd task, but the ESRI developer forums don't help. and I couldn't find anything on Google.

Any ideas?

0


source to share


6 answers


It's been almost ten years since I last played with ESRI, so I can't help you with anything ArcEngine specific.



Maybe you can merge the instances? At best, you can reuse ArcEngine instances and you can bring the instance back to the pool after you are done with it. If this is not possible, you can at least try to run multiple instances, although what is possible and / or useful is highly dependent on the specifics of your application.

+1


source


Is it really COM? In this case, ArcEngine will display a set of COM interfaces. COM interfaces are not magic and are not uniquely associated with one program. In fact, COM has explicit support for proxying. This is, for example, used by DCOM; you get a local proxy for the remote server.



In this case, it should be possible to write a custom COM proxy that spoofs the initialization stuff, but forwards everything else. For your client, the COM interfaces are identical except for the faster one. With ArcEngine, your proxy server can wait a long time between calls.

+1


source


Something I found useful to get ESRI products up and running faster (not necessarily ArcEngine, but it probably does) is to include the port number (usually 27004) in the registry where the license server is defined.

HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ License \ LICENSE_SERVER HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ ArcInfo \ Workstation \ 8.0 \ LICENSE_SERVER

When you install this during installation or through your desktop admin it is usually something like: @ yourserver.name Change this to 27004@yourserver.name

Again this may not solve your problem, but if you don't, it's worth a try. I found this to speed things up in our environment, both with a license manager on the network and with a dongle on the local machine.

+1


source


Well from my understanding of initialization ArcEngine initializes a custom COM environment.

You will never get any real handle over the initialized environment. Can you somehow save the COM environment and pass it on to other programs. My current idea:

The Windows service runs in the background with the ArcEngine initialized. The program somehow requests the service, the service returns the COM environment. Is it possible?

0


source


I have had a lot of grief with the ESRI forums that have helped very little. It seems like the Arc * developers are mostly on their own.

Using ArcEngine + .Net, the initialization time for the application was trivial (maybe 1 second?) In our environment - are you using a slow remote server or is it a JUST engine with no network or maps loaded?

When I have to deal with large datasets, ESRI has a pig.

Nice to see the SO discussion on ESRI products! There are not many here yet ...

0


source


Which line takes 45 seconds? If I had to do some mental debugging, I would assume that you have a problem with your license server.

Check it out first.

0


source







All Articles