Chad suggested the same thing you did about profiling it without the row
additions.  I tried it with the built-in tracing stuff, and it looks like
the retrieval of the properties is what is taking up all the time, not the
actual row additions.

It appears that the properties are pre-populated though.

The MarshalByRefObject question is a good one.  I'll need to run the code
again to see if I can come up with an answer.

On Wed, 7 Jan 2004 10:56:56 -0500, Michael J. Carter <[EMAIL PROTECTED]>
wrote:

>On Wed, 7 Jan, 2004 09:21 -0500, Scott A. Lawrence <[EMAIL PROTECTED]>
>wrote:
>
>> I used the tracing functionality built into ASP.NET.  The process of
>> populating the DataTable with the contents of the ArrayList is what is
>> taking up the majority of the time.
>
>But are you sure that the UserDirectoryObjects actually contain the
>properties pre-populated?
>
>I think Chad Gross has a point.
>
>On Tue, 6 Jan, 2004 16:01 -0500, Chad M. Gross <[EMAIL PROTECTED]>
>wrote:
>
>> Im not certain how your DirectoryEntry wrapper class
>UserDirectoryObject
>> is implemented but I would expect that it reads one property at a time
>> from the DirectoryEntry object or loads them all or each one on demand
>> from the UserDirectoryObject object.  I would expect that your
>performance
>> is due to reading from AD directly in your loop (lastName reading sn
>and
>> firstName reading givenName) vs. adding the rows since you can add at
>> least 100,000 rows to a datatable in < 5 seconds on today's average PC
>> hardware.
>
>Is it possible that your object is lazy-loading the properties and only
>populating them when accessed in the loop?
>
>Also, is it a MarshalByRefObject accessed on a remote server? If so,
>individual property accesses can eat up a lot of time via multiple
>network round trips.
>
>An easy test would be to profile the code looping through the user list
>without adding rows to a DataTable.
>
>  foreach (UserDirectoryObject user in userList)
>  {
>    string lastName = user.lastName;   //must access property to profile
>    string firstName = user.firstName;
>    // etc.
>
>  }
>
>Michael

===================================
This list is hosted by DevelopMentorŪ  http://www.develop.com
Some .NET courses you may be interested in:

NEW! Guerrilla ASP.NET, 26 Jan 2004, in Los Angeles
http://www.develop.com/courses/gaspdotnetls

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to