[ 
https://issues.apache.org/jira/browse/LOG4NET-250?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Bodewig updated LOG4NET-250:
-----------------------------------

    Fix Version/s: 1.2 Maintenance Release

> Drastically decrease amount of time needed for LoggingEvent.UserName
> --------------------------------------------------------------------
>
>                 Key: LOG4NET-250
>                 URL: https://issues.apache.org/jira/browse/LOG4NET-250
>             Project: Log4net
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 1.2.10
>            Reporter: Hao Zhang
>             Fix For: 1.2 Maintenance Release
>
>
> Currently, each LoggingEvent retrieves the logged on user using 
> WindowsIdentity.GetCurrent() which takes a long time
> One can obtain drastic improvements by switching to Environment.UserDomain 
> and Environment.UserName
> Here are some numbers on my box running Windows XP SP3, .NET 2.0, debug mode.
> Using Environment:
>             for (int i = 0; i < 50000; i++)
>             {
>                var x = (Environment.UserDomainName + "\\" + 
> Environment.UserName);
>             }
> takes 4294 milliseconds to run (4.294) using Stopwatch
> Using WindowsIdentity:
>             for (int i = 0; i < 50000; i++)
>             {
>                 var x = (WindowsIdentity.GetCurrent().Name);
>             }
>             start.Stop();
> takes 20191 (20 seconds) milliseconds to run,
> Thus, it takes almost 5x longer to use WindowsIdentity.
> This isn't much of an issue if you're not logging extremely high quantities 
> or do not log the user name.
> However, I'm currently using XmlLayoutSchemaLog4j which forces the retrieval 
> of said information for the log4net:UserName property.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to