[ 
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

Reply via email to