Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
抽象类上Java接口的性能开销_Java_Performance_Benchmarking - Fatal编程技术网

抽象类上Java接口的性能开销

抽象类上Java接口的性能开销,java,performance,benchmarking,Java,Performance,Benchmarking,在我的测试中,在Java中定义的接口上调用函数比使用扩展抽象类(在我的macbook上)要花费大约200纳秒的时间来执行。这是预期的开销吗 我不太了解Java实现的细节。但是,根据我使用不同语言的编译器的经验,我认为由于一个类只能扩展一个抽象类,但可以实现多个接口,搜索正确方法的过程可能需要稍长的时间,因为支持动态调度所需的数据结构中存在一些额外的复杂性。所以这个结果并不令我惊讶 我很确定您的基准测试已经失败(就像Java基准测试一样)。除非您运行的是一些历史CPU,否则开销必须大大低于200

在我的测试中,在Java中定义的接口上调用函数比使用扩展抽象类(在我的macbook上)要花费大约200纳秒的时间来执行。这是预期的开销吗

我不太了解Java实现的细节。但是,根据我使用不同语言的编译器的经验,我认为由于一个类只能扩展一个抽象类,但可以实现多个接口,搜索正确方法的过程可能需要稍长的时间,因为支持动态调度所需的数据结构中存在一些额外的复杂性。所以这个结果并不令我惊讶

我很确定您的基准测试已经失败(就像Java基准测试一样)。除非您运行的是一些历史CPU,否则开销必须大大低于200 ns


尽管如此,接口有时会稍微慢一些,但正如您在中所看到的,事情要复杂得多。

您能发布您的基准代码吗?我怀疑您没有以适当的方式进行基准测试。