Din*_*l24 4 c++ performance qt android qt5
针对在Qt上使用C++编写的Android设备的应用程序是否会比使用Android SDK使用Java编写的应用程序执行得更好?
S.M*_*avi 15
似乎所有其他答案都是关于C++和Java的争议,所以我将尝试分享我在Android中关于Java和Qt编程的经验和知识.
首先,用Java 实现Android SDK,因此开发人员应该使用Java作为默认值.
.
但在某些情况下需要更多的性能.游戏就是一个例子.图像处理是另一个用例.
在某些情况下,您需要使用C++来更好地控制HW.(例如使用频率更高的加速度计)
Android使用名为Dalvik的特定虚拟机(直到第5版).任何需要UI的应用程序都需要Dalvik.所以C++应用程序(游戏和Qt例如)需要涉及Dalvik.
此外,没有C++库直接从C++(如联系簿)中使用服务和操作系统功能.因此,您需要将Java与C++一起使用.为此,您需要在.java文件中编写一些Java代码,并且需要使用JNI来进行C++和Java的通信.JNI是另一个你需要学习的问题.
因此,使用C++开发Android应用程序要比常规Java应用程序困难得多.
.
我在没有QtQuick Controls的情况下编写了Qt\QtQuick的一些Android应用程序.QtQuick对于UI开发来说非常棒,但您需要做一些事情,例如手动管理加载和卸载UI.这不是问题,因为QtQuick中有一些功能用于此目的Loader.
在Desktop中实现应用程序的一般部分(非特定于Android部分)非常高效,快速且有趣(包括C++和QtQuick).
但是在JNI中实现Android特定部分需要更多时间和关注.
.
AnimationFramework.使用Qt您没有此问题).
如果(您不是Qt经验丰富的开发人员)=>使用Java
IF(对于某些处理,您只需要一些性能)=> Java + C++(NDK)
IF(你是Qt经验丰富的开发人员)和((你是Java的初学者)或者(你打算将你的应用移植到其他平台))=>使用Qt和C++
让我们将其分为两部分:
1)C++的性能会比Java更好吗?
是的。当然会。只要您不对 Java 进行多次 JNI 调用,情况总是如此。这就是为什么人们(包括 Google)使用性能至关重要的 C++。
2)QT 的性能会比使用 JNI 返回 Java 或使用 NDK 中 C++ 可用的原始调用更好吗?
假设您以最佳方式编写这两种代码,则顺序可能是原始 NDK 调用 > Java 调用 > QT 调用。QT 库将进行与您完全相同的函数调用,只是在其上放置了不同的抽象层。该层会增加开销。大多数时候开销很可能是最小的。如果您是一位经验丰富的 QT 程序员,您可能会使用 QT 更快地编码。如果您是一位经验丰富的 Android 程序员,那么没有它您会更快地完成工作。QT 会增加出现错误的几率,因为 QT 层本身的任何错误都会在您的代码中显现出来。
| 归档时间: |
|
| 查看次数: |
4320 次 |
| 最近记录: |