Interesting.... but what this has todo with the Logger change?  There 
are no volatile fields, transient yes...

--jason


Adrian Brock wrote:

>Weird,
>
>I expected the volatile to make it run slower.
>The JVM has to check the reference to Category
>on every operation.
>
>hprof says this is true, but for some reason
>the method invoked through the Category takes less
>time?
>
>[pre]
>CPU TIME (ms) BEGIN (total = 41544) Wed Feb 27 13:42:01 2002
>rank   self  accum   count trace method
>   1 19.96% 19.96% 2000000    51 org.apache.log4j.Category.debug (Wrapper)
>   2 19.48% 39.43% 2000000    40 org.apache.log4j.Category.debug (WrapperVolatile)
>   3 10.32% 49.75% 2000000    46 Vol$WrapperVolatile.debug
>   4  9.98% 59.73% 2000000    24 Vol$Wrapper.debug
>   5  9.35% 69.08% 2000000    44 org.apache.log4j.Category.getChainedPriority 
>(Wrapper)
>   6  8.77% 77.85% 2000000    45 org.apache.log4j.Category.getChainedPriority 
>(WrapperVolatile)
>   7  6.97% 84.82% 2000000    26 org.apache.log4j.Priority.isGreaterOrEqual 
>(WrapperVolatile)
>   8  6.41% 91.23% 2000000    23 org.apache.log4j.Priority.isGreaterOrEqual (Wrapper)
>
>
>Wrapper         : 45.70%
>WrapperVolatile : 44.98%
>[/pre]
>
>The volatile test is always quicker.
>There must be problem with my test program!
>
>[pre]
>import org.apache.log4j.Category;
>public class Vol
>{
>   public static void main(String[] args)
>   {
>      org.apache.log4j.BasicConfigurator.configure();
>
>      testWrapper();
>      testVolatile();
>   }
>   public static void testWrapper()
>   {
>      long begin = 0;
>      long end = 0;
>
>      // If the JIT is going to optimize do it before the test
>      Wrapper x = new Wrapper("test");
>      for (int i=0; i < 1000000; i++)
>      {
>         x.debug("Hello");
>      }
>
>      // Run the non-volatile test
>      begin = System.currentTimeMillis();
>      for (int i=0; i < 100000000; i++)
>      {
>         x.debug("Hello");
>      }
>      end = System.currentTimeMillis();
>      System.out.println("Wrapper: " + (end-begin));
>   }
>   public static void testVolatile()
>   {
>      long begin = 0;
>      long end = 0;
>
>      // If the JIT is going to optimize do it before the test
>      WrapperVolatile v = new WrapperVolatile("test");
>      for (int i=0; i < 1000000; i++)
>      {
>         v.debug("Hello");
>      }
>
>      // Run the volatile test
>      begin = System.currentTimeMillis();
>      for (int i=0; i < 100000000; i++)
>      {
>         v.debug("Hello");
>      }
>      end = System.currentTimeMillis();
>      System.out.println("Volatile: " + (end-begin));
>   }
>   public static class Wrapper
>   {
>      private Category cat;
>      public Wrapper(String name)
>      {
>         cat = Category.getInstance(name);
>         cat.setPriority(org.apache.log4j.Priority.ERROR);
>      }
>      public void debug(String x)
>      {
>         cat.debug(x);
>     }
>   }
>   public static class WrapperVolatile
>   {
>      private volatile Category cat;
>      public WrapperVolatile(String name)
>      {
>         cat = Category.getInstance(name);
>         cat.setPriority(org.apache.log4j.Priority.ERROR);
>      }
>      public void debug(String x)
>      {
>         cat.debug(x);
>      }
>   }
>}
>[/pre]
>Regards,
>Adrian
>
>>I did not mean to check this is.  It is a
>>serializable Logger.  I sent 
>>email before about if there were any objections and
>>did not hear any. 
>> Should I leave it or rollback?
>>
>>--jason
>>
>>
>>_______________________________________________
>>Jboss-development mailing list
>>[EMAIL PROTECTED]
>>https://lists.sourceforge.net/lists/listinfo/jboss-dev
>>lopment
>>
>
>
>
>_________________________________________________________
>View thread online: http://main.jboss.org/thread.jsp?forum=66&thread=9773
>
>_______________________________________________
>Jboss-development mailing list
>[EMAIL PROTECTED]
>https://lists.sourceforge.net/lists/listinfo/jboss-development
>



_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to