相关疑难解决方法(0)

为什么返回Java对象引用比返回原语要慢得多

我们正在开发一个对延迟敏感的应用程序,并已对所有类型的方法进行微基准测试(使用jmh).在对查找方法进行微基准测试并对结果感到满意之后,我实现了最终版本,但却发现最终版本比我刚刚基准测试的版本3倍.

罪魁祸首是实现的方法返回一个enum对象而不是一个int.以下是基准代码的简化版本:

@OutputTimeUnit(TimeUnit.MICROSECONDS)
@State(Scope.Thread)
public class ReturnEnumObjectVersusPrimitiveBenchmark {

    enum Category {
        CATEGORY1,
        CATEGORY2,
    }

    @Param( {"3", "2", "1" })
    String value;

    int param;

    @Setup
    public void setUp() {
        param = Integer.parseInt(value);
    }

    @Benchmark
    public int benchmarkReturnOrdinal() {
        if (param < 2) {
            return Category.CATEGORY1.ordinal();
        }
        return Category.CATEGORY2.ordinal();        
    }


    @Benchmark
    public Category benchmarkReturnReference() {
        if (param < 2) {
            return Category.CATEGORY1;
        }
        return Category.CATEGORY2;      
    }


    public static void main(String[] …
Run Code Online (Sandbox Code Playgroud)

java low-latency jmh

73
推荐指数
2
解决办法
5327
查看次数

Java中的对象引用有多大,它究竟包含哪些信息?

作为一个程序员,我认为这些是寻找像"java.lang.Object中的地址1a234552"或类似的相似s

Object s = "hello";
Run Code Online (Sandbox Code Playgroud)

它是否正确?因此所有引用都是固定大小的?

java

45
推荐指数
2
解决办法
3万
查看次数

java中的引用类型大小

为什么java中的引用类型占用8个字节?为什么不少于或多于8个字节?

java

5
推荐指数
2
解决办法
6047
查看次数

何时在实例创建期间分配内存或使用new关键字创建对象?

当我在某处读到时,在创建实例并从堆分配空间时分配内存.如果它是正确的,那么在实例和对象创建期间分配了多少内存?

java memory-management

1
推荐指数
1
解决办法
6498
查看次数

标签 统计

java ×4

jmh ×1

low-latency ×1

memory-management ×1