相关疑难解决方法(0)

有没有人比较用Xamarin C#和Java编写的Android应用程序的性能基准(代码和结果)?

我遇到Xamarin声称他们在Android上的Mono实现和他们的C#编译应用程序比Java代码更快.有没有人对不同Android平台上非常相似的Java和C#代码执行实际基准来验证此类声明,是否可以发布代码和结果?

2013年6月18日新增

由于没有答案,也找不到其他人做的基准,所以决定自己做测试.不幸的是,我的问题仍然是"锁定",所以我不能将其作为答案发布,只编辑问题.请投票重新打开这个问题.对于C#,我使用了Xamarin.Android Ver.4.7.09001(测试版).源代码,我用于测试和编译的APK包的所有数据都在GitHub上:

Java:https://github.com/gregko/TtsSetup_Java

C#:https://github.com/gregko/TtsSetup_C_sharp

如果有人想在其他设备或模拟器上重复我的测试,我也有兴趣了解结果.

我的测试结果

我将我的句子提取器类移植到C#(来自我的@Voice Aloud Reader应用程序),并对英语,俄语,法语,波兰语和捷克语的10个HTML文件进行了一些测试.所有10个文件的每次运行都执行了5次,下面发布了3个不同设备和一个模拟器的总时间.我只测试了"Release"版本,没有启用调试.

HTC Nexus One Android 2.3.7(API 10) - CyanogenMod ROM

Java:总计时间(5次运行):12361 ms,文件读取总计:13304 ms

C#:总计时间(5次运行):17504 ms,文件读取总计:17956 ms

三星Galaxy S2 SGH-I777(Android 4.0.4,API 15) - CyanogenMod ROM

Java:总计时间(5次运行):8947 ms,文件读取总计:9186 ms

C#:总计时间(5次运行):9884 ms,文件读取总计:10247 ms

三星GT-N7100(Android 4.1.1 JellyBean,API 16) - 三星ROM

Java:总计时间(5次运行):9742 ms,文件读取总计:10111 ms

C#:总计时间(5次运行):10459 ms,文件读取总计:10696 ms

仿真器 - 英特尔(Android 4.2,API 17)

Java:总时间(5次运行):2699 ms,文件读取总数:3127 ms

C#:总计时间(5次运行):2049 ms,文件读数总计:2182 ms

仿真器 - 英特尔(Android 2.3.7,API 10)

Java:总计时间(5次运行):2992 ms,文件读取总计:3591 ms

C#:总计时间(5次运行):2049 ms,文件读取总数:2257 ms …

c# java android xamarin dot42

536
推荐指数
6
解决办法
5万
查看次数

是什么让JNI呼叫变慢?

我知道在Java中进行JNI调用时"跨越边界"很慢.

不过,我想知道什么是它,使得它慢?在进行使其速度变慢的JNI调用时,底层jvm实现会做什么?

java performance java-native-interface

184
推荐指数
3
解决办法
4万
查看次数

将字节数组值以little endian顺序转换为short值

我有一个字节数组,其中数组中的数据实际上是短数据.字节以小端顺序排序:

3,1,-48,0,-15,0,36,1

转换为短值时会导致:

259,208,241,292

Java中有一种简单的方法可以将字节值转换为相应的短值吗?我可以编写一个循环,它只占用每个高字节并将其移位8位,并将其与低字节一起使用,但这会影响性能.

java arrays byte endianness

21
推荐指数
1
解决办法
4万
查看次数

为什么这个 JOML (JVM) 代码比等效的 GSL (C) 代码快得多?

我正在尝试优化一个小型库来对向量进行算术运算。

\n

To roughly check my progress, I decided to benchmark the performance of two popular vector arithmetic libraries written in two different languages, the GNU Scientific Library (GSL, C), and the Java OpenGL Math Library (JOML, JVM). I expected GSL, as a large project written in C and compiled ahead of time, to be significantly faster than JOML, with extra baggage from object management, method calls, and conforming to the Java specifications.

\n

Surprisingly, instead JOML (JVM) ended up …

c java performance benchmarking jvm

5
推荐指数
1
解决办法
612
查看次数