小编mik*_*woe的帖子

Java:instanceof 与类名切换性能

我对关于确定对象类型的性能问题很感兴趣,并用两种确定方式编写了一些基准测试。

有人能解释一下为什么变体比用字符串切换类名的变体instanceof 快 350 倍吗?

代码:

class A {}
class B extends A {}

public class InstanceOfBenchmark {
    public static final Object a = new A();

    @Benchmark
    @BenchmarkMode(Mode.Throughput)
    @OutputTimeUnit(TimeUnit.MICROSECONDS)
    public void testInstanceOf()
    {
        if (a instanceof B) {}
        else if (a instanceof String) {}
        else if (a instanceof ArrayList) {}
        else if (a instanceof HashMap) {}
        else if (a instanceof HashSet) {}
        else if (a instanceof A);
    }

    @Benchmark
    @BenchmarkMode(Mode.Throughput)
    @OutputTimeUnit(TimeUnit.MICROSECONDS)
    public void testName() {
        String class_name = …
Run Code Online (Sandbox Code Playgroud)

java reflection benchmarking rtti

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

乘以 if 语句与 collection.contains

哪种方式更好?

if ("Pablo".equals(name) || "Marko".equals(name) || .. ); 
Run Code Online (Sandbox Code Playgroud)

或者

if (Sets.newHashSet("Pablo", "Marko", ..).contains(name));
Run Code Online (Sandbox Code Playgroud)

对内存使用、性能、可读性感兴趣

java collections if-statement

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