Understood about Rewrite. I figured that the performance page is the last remaining thing for the 2.6 release.
I had a week off from work and made reasonable progress but it is surprisingly time consuming to create the data and then analyze it and do a write up. Still to do "must have": - JMH benchmarks for comparing performance of log4j2's Filter to Logback's TurboFilters - rewrite Async Logger latency section - Log4j2: compare File, RandomAccessFile, MemoryMappedFile, Console and Rewrite appenders (remove RandomAccessFile stuff from Async Logger page) "Nice to have": - Compare socket/syslog appenders between logging libraries - log4j2: Cost of various APIs/wrappers (SLF4J, Log4j1, JUL, Commons Logging) - log4j2: Compare performance all layouts (CSV, Gelf, HTML, JSON, Pattern, RFC-5424, Serialized, Syslog, XML). The full todo list is here: https://issues.apache.org/jira/browse/LOG4J2-1179 Please do "mvn site", take a look at the current state of the Performance page and let me know if you find any issues. I might postpone some or all of the "nice to have" items to later, unless someone disagrees. Sent from my iPhone > On 2016/05/08, at 4:02, Ralph Goers <ralph.go...@dslextreme.com> wrote: > > No, I have nothing particular in mind for that. > > Just to let you know - and not to put any pressure on - I am waiting for this > page before we do a release. I think it is pretty important, especially with > the detailed results you are producing. > > Ralph > >> On May 7, 2016, at 9:33 AM, Remko Popma <remko.po...@gmail.com> wrote: >> >> Ralph, >> >> Started to work on a benchmark to compare Log4j2's File, RandomAccessFile, >> MemoryMappedFile, Console and Rewrite appenders. >> Is there any particular scenario you want to test with Rewrite appenders? >> >> Remko >> >>> On Mon, May 2, 2016 at 11:51 PM, Remko Popma <remko.po...@gmail.com> wrote: >>> I will flesh things out further in this ticket: >>> https://issues.apache.org/jira/browse/LOG4J2-1179 >>> >>> >>>> On Mon, May 2, 2016 at 1:42 AM, Ralph Goers <ralph.go...@dslextreme.com> >>>> wrote: >>>> This all sounds really good! >>>> >>>> Yes, the filter comparison isn’t as clear as it should be. Yes, it is how >>>> long it takes to deny the events in nanoseconds. The results were >>>> generated by the FilterPerformanceComparison test class. At the time I >>>> tested with 2 Filters - a Marker filter and the MDC filter. If you look >>>> at BasicMarker in SLF4J you will notice that the hasReferences method is >>>> synchronized. In multi-threaded cases this can cause huge performance >>>> issues if you have a Marker with references to other markers (I personally >>>> experienced this). Also, the referenceList is a Vector, so the contains >>>> methods can throw ConcurrentModificationExceptions if Markers are modified >>>> during execution, even though the add and remove methods are synchronized >>>> the contains method is not. >>>> >>>> The test is currently set up to compare the MDC/ThreadContext Filters >>>> during the build. However, I am not sure it is correct. I don’t actually >>>> see it setting the value in the thread context, so it wouldn’t be denying >>>> the events. >>>> >>>> Ralph >>>> >>>>> On May 1, 2016, at 12:44 AM, Remko Popma <remko.po...@gmail.com> wrote: >>>>> >>>>> I've started to work on this. >>>>> >>>>> Question: >>>>> the current page has a section comparing the performance Log4j 2 Filters >>>>> to Logback Filters. Can you point me to the test that generated these >>>>> results? What is being tested? I am guessing this is how long it takes to >>>>> call logger.log(level, msg) when the filter DENIES the event, is this >>>>> correct? Is the unit for the result numbers nanosecond/operation? >>>>> >>>>> I'm thinking to convert the above filter test to a JMH benchmark. This >>>>> would allow people to quickly verify the results on their own machine. >>>>> >>>>> I need to think a bit on the items to put on the performance page (and to >>>>> create benchmarks for). >>>>> >>>>> * One theme will be a comparison of Log4j 2 to other logging libraries >>>>> like Logback/Log4j1/JUL. One thing to measure is synchronized logging >>>>> throughput. I'll use this chart for the performance page and use a >>>>> simpler graph on the garbage-free manual page. >>>>> * Comparing File/RandomAccessFile/MemoryMappedFile appenders >>>>> * Documenting the performance of TCP/UDP appenders >>>>> * Compare parameterized logging to string concatenation >>>>> * Perhaps investigate/document the overhead of using the adapter/bridge >>>>> modules (Log4j1-api, commons-logging, slf4j, JUL adapter)? >>>>> * Lock-free async logging versus blocking async logging (just a paragraph >>>>> with link to the async logging manual page) >>>>> * Any Layouts to compare? >>>>> >>>>> I plan to do most of the performance testing with JMH. The response time >>>>> test I'm using to test garbage-free latency gives a more nuanced picture >>>>> but is more work to execute, gather results, analyse etc. >>>>> >>>>> I'll flesh this out more over the coming week. Feedback welcome as always. >>>>> >>>>> Remko >>>>> >>>>> >>>>>> On Wed, Apr 27, 2016 at 10:09 AM, Ralph Goers >>>>>> <ralph.go...@dslextreme.com> wrote: >>>>>> Either in the manual or a link above it >>>>>> >>>>>> Sent from my iPhone >>>>>> >>>>>>> On Apr 26, 2016, at 4:41 PM, Remko Popma <remko.po...@gmail.com> wrote: >>>>>>> >>>>>>> Will do. Was on my TODO-eventually list but I'll move it up. :-) >>>>>>> Shall we included it in the manual then? >>>>>>> >>>>>>>> On Wed, Apr 27, 2016 at 6:23 AM, Ralph Goers >>>>>>>> <ralph.go...@dslextreme.com> wrote: >>>>>>>> Remko, >>>>>>>> >>>>>>>> The performance page hasn’t been updated in quite some time. It >>>>>>>> really could use some of your nice graphs. Also, it isn’t linked from >>>>>>>> the main menu. The only way I know of to find it is by clicking a link >>>>>>>> embedded in the About page. Do you think you could enhance that page? >>>>>>>> It would be great to see a variation of the chart you made for >>>>>>>> garbage free logging, although I am just thinking of a few charts >>>>>>>> comparing Log4j 1, Log4j 2, Logback and JUL in various scenarios. >>>>>>>> Something similar to >>>>>>>> https://www.loggly.com/blog/benchmarking-java-logging-frameworks/ >>>>>>>> would be nice, but with similar configurations instead of relying on >>>>>>>> defaults. >>>>>>>> >>>>>>>> I am still aware that we may need to make improvements to the >>>>>>>> SocketAppender. I still intend to create a version that uses Netty, >>>>>>>> >>>>>>>> Ralph >