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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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_Polymorphism_Profiler - Fatal编程技术网

Java多态性性能

Java多态性性能,java,performance,polymorphism,profiler,Java,Performance,Polymorphism,Profiler,我正在分析一些java代码,这些代码多次调用抽象方法。profiler(visualvm)显示时间花在派生类的专用版本上,这是正常的,但也有大量时间花在接口的抽象方法上,它什么也不包含。我怀疑它来自运行时类型检查 在C++中,通常在这个关键的情况下使用模板而不是继承来使用更快的编译时多态性。 Java中的等价物是什么 有没有办法加快这部分代码的速度 感谢您的帮助,添加一个代码片段,向我们展示您正在尝试执行的操作。什么是“大量的时间”?不可能在抽象方法中花费时间。你一定是误解了什么,或者分析工具给

我正在分析一些java代码,这些代码多次调用抽象方法。profiler(visualvm)显示时间花在派生类的专用版本上,这是正常的,但也有大量时间花在接口的抽象方法上,它什么也不包含。我怀疑它来自运行时类型检查

<>在C++中,通常在这个关键的情况下使用模板而不是继承来使用更快的编译时多态性。 Java中的等价物是什么

有没有办法加快这部分代码的速度


感谢您的帮助,

添加一个代码片段,向我们展示您正在尝试执行的操作。什么是“大量的时间”?不可能在抽象方法中花费时间。你一定是误解了什么,或者分析工具给了你错误的数据。好吧,我的意思是时间没有花在抽象方法上,但是虚拟机必须在运行时检查类型以调用正确的重载方法。您可以在C++中使用静态多态性和内联函数来避免这一问题。JVM在有机会时自动地内联函数。它还采用单态/多态内联缓存。你只是在猜测成本,还是有一些特定的数据来支持你的直觉?我认为“虚拟机”不必检查类型来调用正确的重载方法——我认为编译器会这样做。Java是一种强类型语言(仍然是,主要是,至少目前是这样);编译发出调用的语句时,编译器会查看类型并确定哪个方法与这些类型匹配,然后形成一个调用,该调用使用跳转表中的正确位置来匹配这些类型。[顺便说一句,如果没有数字、用户体验或需要加速的特定事物,加速正确事物的机会很小。]