Performance Issue Using COM API...
Hello,
I'm using iManage version 8.5 of the COM API, and have wrapped the calls using C#.
I retrieve a 'root' folder by its ID, and recursively iterate through the directory structure under it using the call SubFolders.
For each directory/folder, I'll check if a certain GroupACL is set, and log the boolean result.
For each document in the folder's Contents, I do the same as above.
Including the root folder, there are 1,100 folders, and total documents in all those folders is 64,000.
The time spent doing that takes over 2 hours. According to Task Manager, my project C# .exe consumed less than a minute of CPU Time. Looking at the Network tab in Task Manager while executing, one can see a steady stream of IO as the program works. So it appears that all the time is spent going over the network to-and-from the database.
When complete, the log reports all is well, 2+ hours later for 65,000 items.
Additionally, on the same structure above, when I add a security GroupACL and set its imAccessRight and call Update, the execution time soars to over 13 hours now (..it's still executing as I type). Log file size keeps incrementing (..the size is correct), CPU and Network looking as described above.
I am running the code on a development WorkSite application server, which then hits a separate Oracle database server, and both servers are pretty beefy.
Given the evidence, do those execution times seem unreasonably slow?
What can I do to improve performance? I was hoping to cut network travel-time by using/calling a ‘batch’ update after setting the security on all items, but did not find any batch API calls.
Thanks in advance.