当前位置: 首页 > 面试题库 >

Android是否cast割了ARM的Jazelle技术?

袁文景
2023-03-14
问题内容

我所看到的理由是我们说“重击”
Android中的Java字节码是为了提高性能。(我怀疑还有另一个原因。)但是,通过更改字节码,它们是否没有使硬件加速技术(例如Jazelle
moot)成为现实,从而实际上降低了可用于Mobile Java平台的性能?

知道目标平台是基于ARM的移动平台,这对我来说似乎很不直观。虽然它可以在其他CPU架构上为您提供更好的性能,但它似乎在面对ARM和Jazelle时会吐口水。

它对Java性能有什么样的定量影响?

它实际上会提高性能吗?

对其他平台有什么影响?(即x86,mips,yadda,yadda,yadda …)


问题答案:

是的,达尔维克使贾泽勒无用。唯一的问题是Jazelle首先有用还是90%的营销炒作?一个好的JIT或AOT(提前)编译器往往会比尝试使用专门的指令提供更好的性能。Dalvik的基于寄存器的方法可能比传统的Java字节码解释器更快,但是如果解释器和JIT的区别很小。希望下一个Android版本具有JIT。

使用一流的垃圾收集器和优化器编写好的虚拟机大约需要5-10年。Sun(和Microsoft)已经度过了那些年。谷歌没有。希望他们会继续对此进行投资,以使一天的Android
Java代码不会比应有的速度慢90%。



 类似资料:
  • 除非通过无界通配符对其进行参数化,否则不允许转换为参数化类型。 Box<Integer> integerBox = new Box<Integer>(); Box<Number> numberBox = new Box<Number>(); //Compiler Error: Cannot cast from Box<Number> to Box<Integer> integerBox = (Bo

  • 我在网上搜索了很长一段时间,但我找不到我要找的东西。 如果我的设备已经连接到蓝牙设备(/在我启动应用程序之前),我如何通过我的应用程序发现。 我希望有类似bool BluetoothAdapter的东西。isPaired()

  • 我读过Kafka文档,但当有人谈论数据和分区时,我仍然感到困惑。在文档中,我看到客户机将向分区发送消息。然后将消息分区复制到副本(跨代理)。和使用者从分区读取数据。 我有一个有两个分区的主题。假设我有一个生产者,它向分区#1发送消息。但我有两个消费者,一个从分区1读取,另一个从分区2读取。这是否意味着我的分区1将有50%的消息,分区2将有50%的消息。或者,当客户端将数据发送到分区#1时,分区#1

  • 该代码在Android版本<5.0上运行良好。但是,在5.0上,它不再工作,mImageUri1总是为null。 Android 5.0中有什么变化导致了这一点吗?

  • 本文向大家介绍Java中的ARM是什么?,包括了Java中的ARM是什么?的使用技巧和注意事项,需要的朋友参考一下 资源是实现AutoClosable接口的对象。每当您在程序中使用资源时,建议在使用后将其关闭。 最初,此任务是使用finally块完成的。 示例 输出结果 ARM Java中的ARM代表自动资源管理,它是在Java7中引入的,其中资源应在try块中声明,并且资源将在该块末尾自动关闭。

  • 我想知道是否有一种方法可以测试你是否订阅了android方面的主题。 基本上,我希望所有设备在安装期间,当设备首次获得令牌时,都会订阅一个主题。然而,设备总是有可能无法订阅。FCM注册令牌应该长时间安装在设备上,因此,如果不清除数据、卸载/重新安装等,就不应该再次调用onTokenRefresh()方法。 我的想法是测试设备是否订阅了我的Mainactive中的主题,如果没有,则尝试再次订阅。如果