仅基于性能,大约有多少"简单"的java行是进行JNI调用的等效性能?
或者尝试以更具体的方式表达问题,如果是简单的java操作,例如
someIntVar1 = someIntVar2 + someIntVar3;
Run Code Online (Sandbox Code Playgroud)
给出了一个"CPU工作"索引1,那个JNI调用开销的典型(球场)"CPU工作"索引是什么?
此问题忽略了等待本机代码执行所花费的时间.在电话用语中,它严格来说是呼叫的"旗帜下降"部分,而不是"呼叫率".
提出这个问题的原因是有一个"经验法则",当你知道本地成本(来自直接测试)和给定操作的java成本时,知道何时打算尝试编写JNI调用.它可以帮助您快速避免编写JNI调用的麻烦,只是发现callout开销消耗了使用本机代码的任何好处.
有些人对CPU,RAM等的变化感到困惑.这几乎与问题无关 - 我要求java代码行的相对成本.如果CPU和RAM很差,它们对java和JNI都很差,因此环境因素应该平衡.JVM版本也属于"无关"类别.
这个问题不是要求以纳秒为单位的绝对时间,而是以"简单java代码行"为单位的球场"工作努力".
我最近选择在Xamarin上使用C#学习C#并开发移动应用程序.特别适用于Windows Phone和Android开发.我知道Windows Phone应用程序开发主要是C#,而Xamarin可以为Android编译本机代码,但它与Java中的本机开发相比如何呢?我是否能够使用Xamarin的每个或至少大多数(如90%以上)的Android SDK和扩展程序?
我们正在考虑将我们的C#.NET应用程序移植到Android,我已经开始阅读有关Xamarin.Android和Mono框架的内容.我刚刚开始Android开发.
我在主要的http://xamarin.com/android页面上注意到它指出:
本机代码 高性能编译代码,可完全访问所有本机API.
这是否意味着生成的代码将是更难以进行逆向工程的本机代码?我们希望创建一个包含我们的关键算法的类库,如果我们可以将它编译为本机代码以阻碍逆向工程,那么这将使我们不那么害怕移植.
我已经阅读了其他一些关于Android代码的帖子,而不是比模糊的.net程序集更难反编译(使用ProGuard之后).本机代码编译是在这些帖子之后出现的最新功能吗?谢谢你的建议!
我正在试图评估Xamarin是否适合我的项目.该项目是适用于Android和iOS的大型复杂应用程序,具有大量客户端 - 服务器通信.用户界面是一个重点,必须非常快速和流畅.此外,我们计划大量使用UX图形效果(与Spotify应用程序相当).
目前我们计划使用Java/Objective-C寻找两个独立的本机应用程序.但是,当然,跨平台代码共享的可能性对我们来说非常方便.
到目前为止我听过的大多数意见都说Xamarin - 虽然远比HTML5应用程序好 - 但却无法与本机应用程序的用户体验相媲美.另外,我测试了以下使用Xamarin(在Android上)制作的应用程序:
从我的印象来看,它们都不能与一个优秀的原生应用程序的速度和平滑度完全匹配.
如果我们专注于一流的用户体验,那么Xamarin真的可行吗?它能真正匹配原生UX吗?我特别期待那些拥有大型复杂跨平台Xamarin应用程序经验的开发人员的意见.一些批评声音会非常有用.
非常感谢!
我想开始Android开发.我可以使用c#或Java开始Android
开发.我是 .NET开发人员.我的问题是哪种语言更适合android编程.这些语言有哪些限制?什么是他们在机器人的编程能力?我可以开发完整的应用程序.NET,而无需学习java?