性能微优化-静态方法调用
6.12 静态方法调用
Java对静态方法调用采用的字节码指令是INVOKESTATIC, 而对应实例方法的调用,字节码指令INVOKEVIRTUAL
后者称为虚方法调用,每个类都会维护一个虚方法表vtable,包含了方法它会从虚方法表中找到调用入口,这个虚方法表维护了方法名(包含签名)到实际调用方法的对应关系,如果当前类未查询到,则需要找到父类的虚方法表
显然调用实例方法,比调用静态方法稍微耗时,在本节的测试中,instanceCall和staticCall的吞吐量如下:
Benchmark Mode Score Units
c.i.c.c.StaticMethodCall.instanceCall thrpt 1751021.010 ops/ms
c.i.c.c.StaticMethodCall.staticCall thrpt 2612071.922 ops/ms