In looking at FileManager and OutputStreamManager it does have a ByteBuffer but 
it requires synchronization. I am thinking it might make more sense to have a 
ThreadLocal ByteBuffer and then pass that to FileChannel.write() so that no 
synchronization is required.

Ralph

> On Feb 7, 2017, at 9:36 AM, Matt Sicker <boa...@gmail.com> wrote:
> 
> Can't we use the ByteBuffers introduced in the GC-free epic? I was under the 
> impression that byte arrays being passed to appenders was created from a 
> ByteBuffer at this point, though I haven't really taken a close look at this.
> 
> On 7 February 2017 at 10:05, Apache <ralph.go...@dslextreme.com 
> <mailto:ralph.go...@dslextreme.com>> wrote:
> A FileChannel is guaranteed to be thread safe. You can obtain a FileChannel 
> from a FlieOutputStream, so that would seem to imply that FileOutputStream 
> might be thread-safe, but you can’t really know that without looking at the 
> source. The problem is that FileChannel.write() takes a ByteBuffer whereas 
> FileOutputStream.write() accepts a byte array. To be thread safe it would 
> have to safely copy the byte array into the byte buffer to pass to the 
> FileChannel. But FileOutputStream doesn’t use the FileChannel at all in Java 
> 7. It calls a native method that doesn’t specify whether it is thread-safe or 
> not, so simply removing the synchronization isn’t guaranteed to work 
> properly. 
> 
> OTOH, RandomAccessFile doesn’t say that it is thread-safe either and we are 
> not synchronizing writes to it.
> 
> Ralph
> 
>> On Feb 7, 2017, at 8:37 AM, Matt Sicker <boa...@gmail.com 
>> <mailto:boa...@gmail.com>> wrote:
>> 
>> I looked at 1.2-SNAPSHOT and 1.1.10 and saw nothing special other than a 
>> lack of a synchronized keyword on the equivalent append method. Perhaps he 
>> figured out a simpler way to emulate locking?
>> 
>> I've been working with async/non-blocking streaming APIs for long enough now 
>> that I can't even remember the last time I had to write an actual lock.
>> 
>> On 6 February 2017 at 22:02, Apache <ralph.go...@dslextreme.com 
>> <mailto:ralph.go...@dslextreme.com>> wrote:
>> Logback 1.2-SNAPSHOT
>> 
>> Ralph
>> 
>>> On Feb 6, 2017, at 8:29 PM, Remko Popma <remko.po...@gmail.com 
>>> <mailto:remko.po...@gmail.com>> wrote:
>>> 
>>> Sorry what 1.2 do you mean? 
>>> 
>>> Sent from my iPhone
>>> 
>>> On Feb 7, 2017, at 11:06, Apache <ralph.go...@dslextreme.com 
>>> <mailto:ralph.go...@dslextreme.com>> wrote:
>>> 
>>>> In 1.2?  That may work for a FileOutputStream but it isn’t guaranteed to 
>>>> work for others.
>>>> 
>>>> Ralph
>>>> 
>>>>> On Feb 6, 2017, at 5:23 PM, Matt Sicker <boa...@gmail.com 
>>>>> <mailto:boa...@gmail.com>> wrote:
>>>>> 
>>>>> I'm not sure if I'm looking in the right place, but a major difference 
>>>>> now between Logback's appenders and Log4j's is that Logback isn't 
>>>>> synchronized on the append method.
>>>>> 
>>>>> On 6 February 2017 at 18:18, Matt Sicker <boa...@gmail.com 
>>>>> <mailto:boa...@gmail.com>> wrote:
>>>>> Is this something we can improve performance on by implementing a file 
>>>>> appender based on FileChannel or AsynchronousFileChannel instead of 
>>>>> OutputStream?
>>>>> 
>>>>> On 6 February 2017 at 17:50, Apache <ralph.go...@dslextreme.com 
>>>>> <mailto:ralph.go...@dslextreme.com>> wrote:
>>>>> Ceki has updated his numbers to include those reported on the mailing 
>>>>> list. 
>>>>> https://docs.google.com/spreadsheets/d/1cpb5D7qnyye4W0RTlHUnXedYK98catNZytYIu5D91m0/edit#gid=0
>>>>>  
>>>>> <https://docs.google.com/spreadsheets/d/1cpb5D7qnyye4W0RTlHUnXedYK98catNZytYIu5D91m0/edit#gid=0>
>>>>> 
>>>>> I haven’t run the tests with Logback 1.2-SNAPSHOT but my numbers for my 
>>>>> two MacBooks are at 
>>>>> https://docs.google.com/spreadsheets/d/1L67IhmUVvyLBWtC6iq0TMj-j0vrbKsUKWuZV0Nlqisk/edit?usp=sharing
>>>>>  
>>>>> <https://docs.google.com/spreadsheets/d/1L67IhmUVvyLBWtC6iq0TMj-j0vrbKsUKWuZV0Nlqisk/edit?usp=sharing>.
>>>>>  
>>>>> 
>>>>> Ralph
>>>>> 
>>>>>> On Feb 6, 2017, at 9:33 AM, Apache <ralph.go...@dslextreme.com 
>>>>>> <mailto:ralph.go...@dslextreme.com>> wrote:
>>>>>> 
>>>>>> Yes, that is still the standard approach most people use and is the only 
>>>>>> way to provide a head-to-head comparison against the logging frameworks.
>>>>>> 
>>>>>> Ralph
>>>>>> 
>>>>>>> On Feb 6, 2017, at 8:02 AM, Matt Sicker <boa...@gmail.com 
>>>>>>> <mailto:boa...@gmail.com>> wrote:
>>>>>>> 
>>>>>>> This is all in a synchronous appender, right? Either way, that's rather 
>>>>>>> interesting.
>>>>>>> 
>>>>>>> On 6 February 2017 at 07:54, Apache <ralph.go...@dslextreme.com 
>>>>>>> <mailto:ralph.go...@dslextreme.com>> wrote:
>>>>>>> Someone posted numbers on the Logback user’s list that match mine.  It 
>>>>>>> shows Logback 1.1.9 was pretty terrible, 1.1.10 is somewhat better and 
>>>>>>> 1.2-SNAPSHOT is on par or slightly better than Log4j 2.
>>>>>>> 
>>>>>>> Ralph
>>>>>>> 
>>>>>>>> On Feb 5, 2017, at 3:25 PM, Matt Sicker <boa...@gmail.com 
>>>>>>>> <mailto:boa...@gmail.com>> wrote:
>>>>>>>> 
>>>>>>>> I think we need some comparisons on the log4j side: file appender with 
>>>>>>>> 256k buffer size, random access file appender with 256k buffer size 
>>>>>>>> (which appears to be the default), and memory mapped file appender. 
>>>>>>>> It'd be cool to see how these compose with async logging enabled in 
>>>>>>>> both log4j and logback.
>>>>>>>> 
>>>>>>>> On 5 February 2017 at 16:06, Apache <ralph.go...@dslextreme.com 
>>>>>>>> <mailto:ralph.go...@dslextreme.com>> wrote:
>>>>>>>> You should run the code at https://github.com/ceki/logback-perf 
>>>>>>>> <https://github.com/ceki/logback-perf> to compare your results to 
>>>>>>>> Ceki’s.  You also should capture the cpubenchmark speed of your 
>>>>>>>> processor and get the speed of your hard drive. I used Blackmagic 
>>>>>>>> speed test on my Mac. I am capturing my results in a Google 
>>>>>>>> spreadsheet. I will post the like once I have it.
>>>>>>>> 
>>>>>>>> Ralph
>>>>>>>> 
>>>>>>>>> On Feb 5, 2017, at 1:48 PM, Gary Gregory <garydgreg...@gmail.com 
>>>>>>>>> <mailto:garydgreg...@gmail.com>> wrote:
>>>>>>>>> 
>>>>>>>>> If you want, I can run tests on Windows once the build works on 
>>>>>>>>> Windows again.
>>>>>>>>> 
>>>>>>>>> Let me know what args/command line...
>>>>>>>>> 
>>>>>>>>> Gary
>>>>>>>>> 
>>>>>>>>> On Feb 5, 2017 11:58 AM, "Apache" <ralph.go...@dslextreme.com 
>>>>>>>>> <mailto:ralph.go...@dslextreme.com>> wrote:
>>>>>>>>> I guess my MacBook Pro must fit in the Slow CPU/Fast Hard drive 
>>>>>>>>> category. With Logback 1.10 and -t 4  now get
>>>>>>>>> 
>>>>>>>>> Benchmark                                         Mode  Samples       
>>>>>>>>>  Score       Error  Units
>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile        thrpt       20    
>>>>>>>>> 98187.673 ±  4935.712  ops/s
>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File     thrpt       20   
>>>>>>>>> 842374.496 ±  6762.712  ops/s
>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File     thrpt       20  
>>>>>>>>> 1853062.583 ± 67032.225  ops/s
>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF      thrpt       20  
>>>>>>>>> 2036011.226 ± 53208.281  ops/s
>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile    thrpt       20   
>>>>>>>>> 999667.438 ± 12074.003  ops/s
>>>>>>>>> 
>>>>>>>>> I’ll have to try this on one my VMs at work. We don’t run anything 
>>>>>>>>> directly on bare metal any more.
>>>>>>>>> 
>>>>>>>>> Ralph
>>>>>>>>> 
>>>>>>>>>> On Feb 5, 2017, at 9:40 AM, Apache <ralph.go...@dslextreme.com 
>>>>>>>>>> <mailto:ralph.go...@dslextreme.com>> wrote:
>>>>>>>>>> 
>>>>>>>>>> Ceki finally fixed some of the performance problems in the 
>>>>>>>>>> FileAppender. See https://logback.qos.ch/news.html 
>>>>>>>>>> <https://logback.qos.ch/news.html> and 
>>>>>>>>>> https://docs.google.com/spreadsheets/d/1cpb5D7qnyye4W0RTlHUnXedYK98catNZytYIu5D91m0/edit#gid=0
>>>>>>>>>>  
>>>>>>>>>> <https://docs.google.com/spreadsheets/d/1cpb5D7qnyye4W0RTlHUnXedYK98catNZytYIu5D91m0/edit#gid=0>.
>>>>>>>>>>  I suspect we have a few optimizations we can make.
>>>>>>>>>> 
>>>>>>>>>> Ralph
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> -- 
>>>>>>>> Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -- 
>>>>>>> Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>
>>>>> 
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>
>>>> 
>> 
>> 
>> 
>> 
>> -- 
>> Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>
> 
> 
> 
> 
> -- 
> Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>

Reply via email to