J
Joris Dobbelsteen
Dear,
I've made a little tool that synchronizes my ISA Server block list with a
database. However the performance of this is very low.
I'm retreiving 41140 rows from the database, storing them in a hash table
and clearing the input tables within 1 or 2 seconds.
Getting 41140 rows from the ISA server destination set takes me an awsome
173 seconds!
Doing some processing (lookup and deletes on the hashtable) makes this
retreiving good for 379 seconds.
173 seconds for retreiving the entries from the ISA server.
206 seconds for getting the entry elements and removing the entries from the
hash table.
The objects that I'm working with and probably gives the problem is
FPCDestinationSet (and FPCDestination). These are COM objects.
I use a enumerator to work through the FPCDestinationSet (there is no other
way to do so).
My initial conclusion (though premature) would be that the COM interface is
very slow. Loading the same list in the ISA Managment console takes below 2
seconds!
What can I do to improve the performance of this application?
Should I use unsafe code for the COM parts?
A secondary problem is using over 100 MB of RAM for the application (I got
it down already from 160 MB). 50k* 200 Bytes = 10MB (50k rows with <80 byte
strings (take 120 byte for overhead). How do I get this down to a
respectible level?
In .NET the FPCDestinationSet has the function SerializeToBuffer returning a
signed byte array, but this function is not documented anywhere.
- Joris
I've made a little tool that synchronizes my ISA Server block list with a
database. However the performance of this is very low.
I'm retreiving 41140 rows from the database, storing them in a hash table
and clearing the input tables within 1 or 2 seconds.
Getting 41140 rows from the ISA server destination set takes me an awsome
173 seconds!
Doing some processing (lookup and deletes on the hashtable) makes this
retreiving good for 379 seconds.
173 seconds for retreiving the entries from the ISA server.
206 seconds for getting the entry elements and removing the entries from the
hash table.
The objects that I'm working with and probably gives the problem is
FPCDestinationSet (and FPCDestination). These are COM objects.
I use a enumerator to work through the FPCDestinationSet (there is no other
way to do so).
My initial conclusion (though premature) would be that the COM interface is
very slow. Loading the same list in the ISA Managment console takes below 2
seconds!
What can I do to improve the performance of this application?
Should I use unsafe code for the COM parts?
A secondary problem is using over 100 MB of RAM for the application (I got
it down already from 160 MB). 50k* 200 Bytes = 10MB (50k rows with <80 byte
strings (take 120 byte for overhead). How do I get this down to a
respectible level?
In .NET the FPCDestinationSet has the function SerializeToBuffer returning a
signed byte array, but this function is not documented anywhere.
- Joris