>> 1. Garbage-free logging. You can format and send out log message without allocating any new objects.
>> 2. Lock-free logging. you can format and send out log message without acquiring any locks.
>> 3. Log message templates are compiled into Java bytecode in run time or even in compile time, which makes message formatting really fast.
> Any measurements of the impact for some realistic code?
The idea that high-performance application may want to process data withoutproducing garbage is not something new. Check, for example, this link:
http://oreilly.com/catalog/javapt/chapter/ch04.html
The same could be said about lock-free design. It is well known approach to increase performance of multi-threaded applications.
Ultralog is not the first Java library designed to be garbage- and lock-free and focused on demands of high performance applications. See, for example, LMAX Disruptor:
http://lmax-exchange.github.com/disruptor/ It is all about hot to avoid lock and garbage creation and it states itself as "High Performance Inter-Thread Messaging Library".
Ultralog is even not the first attempt to create garbage-free logging framework for Java. See, for example, the following link:
https://bitbucket.org/vladimir.dolzh...gger/wiki/Home It states its goal as "to create ad-hoc logger for low latency (latency critical) applications (to be precise for latency critical execution path) which will affect application explicitand implicit (though gc pauses) as less as it possible". It does not claim itself to be lock-free though.
What is new in ultralog in comparison with gflogger, is that it demonstrates that garbage-free logging could be done without sacrificing code readability.