[ https://issues.apache.org/jira/browse/CASSANDRA-15766?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17100159#comment-17100159 ]
Yifan Cai commented on CASSANDRA-15766: --------------------------------------- There might not be a big difference between multiple and single lambda. The lambda is compiled into a static method in the bytecode view. If in the hot path and JIT kicked in, the static method could be even inlined. Consider the following code {code:java} import java.util.function.Supplier; class Foo { public void foo() { comsume(() -> "foo"); } public void comsume(Supplier<String> supp) { supp.get(); } } {code} Running {{javap -v -p Foo.class}} reveals the below. {code:java} private static java.lang.String lambda$foo$0(); descriptor: ()Ljava/lang/String; flags: ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC Code: stack=1, locals=0, args_size=0 0: ldc #5 // String foo 2: areturn LineNumberTable: line 5: 0{code} > NoSpamLogger arguments building objects on hot paths > ---------------------------------------------------- > > Key: CASSANDRA-15766 > URL: https://issues.apache.org/jira/browse/CASSANDRA-15766 > Project: Cassandra > Issue Type: Bug > Components: Observability/Logging > Reporter: Jon Meredith > Assignee: Jon Meredith > Priority: Normal > Fix For: 4.0-rc > > > NoSpamLogger is used in hot logging paths to prevent logs being overrun. For > that to be most effective the arguments to the logger need to be cheap to > construct. During the internode messaging refactor CASSANDRA-15066, > performance changes to BufferPool for CASSANDRA-14416 > were accidentally reverted in the merge up from 3.11. > Reviewing other uses since, it looks like there are a few places where the > arguments require some form of String building. > org.apache.cassandra.net.InboundSink#accept > org.apache.cassandra.net.InboundMessageHandler#processCorruptFrame > org.apache.cassandra.net.InboundMessageHandler.LargeMessage#deserialize > org.apache.cassandra.net.OutboundConnection#onOverloaded > org.apache.cassandra.utils.memory.BufferPool.GlobalPool#allocateMoreChunks > Formatting arguments should either be precomputed, or if expensive they > should be computed after the decision on whether to noSpamLog has been made. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org