• 木心
    2018-09-11
    IR只有我看不懂吗?各颜色的模块代表什么意思,还有不同钥匙的线代表什么意思?
    
     33
  • godtrue
    2018-09-10
    方法内联,一种优化代码的手段,其目的就是想让代码执行的更快一些,它怎么做到的呢?以前记录过性能优化的思路就那么几种,让赶的快的干,如果实现不了就让干的快的多干,干的慢点少干。方法内联是采用少干活的方式来提高效率的,直接将对应方法的字节码内联过来,省下了记录切换上下文环境的时间和空间。
    
     3
  • 刘冠利
    2018-09-06
    请问final的使用对内联有多大帮助?

    作者回复: 在(下)篇有介绍

    
     2
  • Jerry银银
    2019-12-29
    将Java程序编译字节码的时候,Java编译器会有方法内联的优化吗?

    作者回复: javac几乎不做任何优化

    
     1
  • MZC
    2019-12-26
    IR图 不知道是干什么的 老师 而且 您的专栏里边 好多名词都不太懂 还望老师抽时间回答一下
    
     1
  • 随心而至
    2019-10-25
    IR的图我也没看懂,不过内联想要做的事情看明白了,感觉和C/C++里面的define有点像
    
     1
  • gogo
    2019-09-30
    老师,是只有即时编译才会进行方法内联吗?jdk编译java源码的时候会进行方法内联吗
    
     1
  • 皮卡皮卡丘
    2018-09-05
    这个是方法内联信息吗,怎么和代码里的信息有差别?@ 1 java.lang.Object::<init> (1 bytes)
                                  @ 5 java.lang.AbstractStringBuilder::appendNull (56 bytes) callee is too large
                                  @ 10 java.lang.String::length (6 bytes)
                                  @ 21 java.lang.AbstractStringBuilder::ensureCapacityInternal (27 bytes)
                                    @ 17 java.lang.AbstractStringBuilder::newCapacity (39 bytes) callee is too large
                                    @ 20 java.util.Arrays::copyOf (19 bytes)
                                      @ 11 java.lang.Math::min (11 bytes)
                                      @ 14 java.lang.System::arraycopy (0 bytes) intrinsic
                                  @ 35 java.lang.String::getChars (62 bytes) callee is too large
                                  @ 1 java.lang.Object::<init> (1 bytes)
                                  @ 13 java/lang/StringIndexOutOfBoundsException::<init> (not loaded) not inlineable
                                  @ 30 java/lang/StringIndexOutOfBoundsException::<init> (not loaded) not inlineable
                                  @ 65 java/lang/StringIndexOutOfBoundsException::<init> (not loaded) not inlineable
                                  @ 75 java.util.Arrays::copyOfRange (63 bytes) callee is too large
                                  @ 17 java.lang.AbstractStringBuilder::newCapacity (39 bytes) callee is too large
                                  @ 20 java.util.Arrays::copyOf (19 bytes)
                                    @ 11 java.lang.Math::min (11 bytes)
                                    @ 14 java.lang.System::arraycopy (0 bytes) intrinsic
                                  @ 66 java.lang.String::indexOfSupplementary (71 bytes) callee is too large
                                  @ 3 java.lang.String::indexOf (70 bytes) callee is too large
                                  @ 1 java.lang.Character::toUpperCase (9 bytes)
                             
                     
    展开

    作者回复: PrintInlining将打印JVM里所有即时编译的内联优化信息,所以看起来比较杂

    
     1
  • 饭粒
    2019-12-24
    这个和 C++ 内联函数类似吧,目的是减少函数调用的开销。最终都是编译器来优化,C++ 通过 inline 声明函数,建议编译器内联编译。Java 是 JVM 自动处理,也可通过 VM 参数控制。

    作者回复: 对的

    
    
  • 乘风
    2019-07-18
    感谢雨迪,之前对方法内联疑惑很多,知道有方法内联这件非常优秀的优化技术,却不知道如何在一定范围内优化代码来提高方法内联的几率。


    
    
  • 金龟
    2019-01-28
    默认的内联时机是什么样的呢?比如默认在什么情况方法会内联
    
    
  • Geek_987169
    2018-10-21
    老师,能否提供一个学习IR图的地址?

    作者回复: 这方面的知识网上并不多。可以知乎上搜Sea of nodes IR,看R大的回答,有不少链接可以参考。

    
    
  • Leon Wong
    2018-09-27
    建议老师单独开个专题讲IGV生成的IR图
    
    
  • 三木子
    2018-09-07
    请问方法内联是发生在解释执行阶段吗?这里方法调用可以理解为解释执行中的小部分解释吗?有些困惑,麻烦老师解释执行下。

    作者回复: 方法内联只发生在即时编译器中。

    方法调用就是字面意思。在即时编译过程中,即时编译器会将当前方法所包含的方法调用的目标方法纳入编译范围中。

    
    
  • Scott
    2018-09-05
    最后引入常量后foo方法两个图是一样的,后面一幅图应该if节点被优化掉了吧,直接返回0了。

    作者回复: 多谢指出!

    
    
我们在线,来聊聊吧