- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要为 ListView/GridView 生成大量对象列表。据我了解,这些对象必须派生自 Java.Lang.Object。生成这些对象所花费的时间很长。
我创建了一个简单的测试来查看简单地创建 5000 个派生自 Java.Lang.Object 的对象需要多长时间,并将其与创建 5000 个派生自 System.Object 的对象进行比较。
public class MyJavaObject : Java.Lang.Object { }
public class MyObject : System.Object { }
private void CreateObjects()
{
var objectCount = 5000;
var javaObjectsWatch = new Stopwatch();
javaObjectsWatch.Start();
for (int i = 0; i < objectCount; i++)
{
new MyJavaObject();
}
javaObjectsWatch.Stop();
var javaObjectsCreationElapsed = javaObjectsWatch.Elapsed.TotalMilliseconds;
Console.WriteLine($"{objectCount} java objects took {javaObjectsCreationElapsed} milliseconds");
var objectsWatch = new Stopwatch();
objectsWatch.Start();
for (int i = 0; i < objectCount; i++)
{
new MyObject();
}
objectsWatch.Stop();
var objectsCreationElapsed = objectsWatch.Elapsed.TotalMilliseconds;
Console.WriteLine($"{objectCount} objects took {objectsCreationElapsed} milliseconds");
}
运行 CreateObjects 会将以下内容写入控制台。
“5000 个 java 对象耗时 4437.1033 毫秒”
“5000 个对象用了 1.831 毫秒”
创建 MyJavaObjects 需要将近 4.5 秒,而创建 MyObjects 甚至不到百分之一秒。
如何让 MyJavaObjects 的创建更接近于创建 MyObjects 的效率?
最佳答案
Java对象的创建包含以下几个部分:1)在Dalvik VM上创建对象; 2) 在 Xamarin.Android VM 上创建一个相应的对象来跟踪另一个对象的生命周期。与 .NET/COM 互操作非常相似。
因此,它不会像您希望的那样快,但对于大多数移动应用程序来说仍然足够快。当需要使用一组特定的组件时,这是解决方案必须付出的负担。对于其他场景,Xamarin.Android 可以直接调用 Android 原生 API 而无需接触 Dalvik。
可以在 Miguel de Icaza 的 Android 版 Mono 博客中找到一些内部信息。
关于java - Xamarin Java.Lang.Object 创建效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35904448/
在 Tomcat 6/Ubuntu 12.04 上启动 Grails 2.1.0 应用程序时出现以下错误。 Error 500 - Internal Server Error. groovy.lang
在运行 Storm 拓扑时,我收到此错误。拓扑完美运行 5 分钟,没有任何错误,然后失败。我正在使用 Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS as 300 sec i
我有一个 jsp 代码在其中一台机器上运行良好。但是当我复制到另一台机器时,我得到了这个 no such method found 异常。我是 Spring 的新手。有人可以解释我错过了什么吗? 以下
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我的代码在下面给出了一个错误; Exception in thread "main" java.lang.NoSuchMethodError: com/myApp/Client.cypherCBC(L
我正在尝试一个 Restful web 服务示例,所以当我要访问 url 时,我遇到了异常 java.lang.NoSuchMethodError: jersey.repackaged.com.goo
我正在将一个 Spring web 项目转换为一个 Maven 项目,但我收到了这个错误: java.lang.NoSuchMethodError: org.jboss.logging.Logger.
在我的项目中,我有一个像这样的枚举: public enum MyEnum { FIRST(1), SECOND(2); private int value; private MyEnum(int v
我创建了这个简单的示例,用于读取 Linux 正常运行时间: public String getMachineUptime() throws IOException { String[] di
我正在使用 Eclipse,并且正在使用 Java。我的目标是使用 bogoSort 方法对 vector 进行排序在一个 vector (vectorExample)中适应我的 vector 类型,
我正在运行以下查询。它显示一条错误消息。如何解决这个错误? ListrouteList=null; List companyList = session.createS
我有以下模型类: @Entity @Table(name="user_content") @org.hibernate.annotations.NamedQueries({ @org.
我有那个错误。这是我的代码: GmailSettingsService service = new GmailSettingsService(APPLICATION_NAME, DOMAIN_NAME
实际上我在执行我的java程序时遇到了下面提到的错误 Exception in thread "pool-1-thread-1" java.lang.ClassCastException: jav
java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.String 我在以下代码中遇到此异常: Strin
我正在尝试从 linkedhashset 中检索随机元素。下面是我的代码,但它每次都给我异常。 private static void generateRandomUserId(Set userIds
我已经完成了 Android 中的代码: List spinnerArray = new ArrayList(); for (int i = 0; i item = (LinkedTreeMap)
这个问题已经有答案了: Explanation of ClassCastException in Java (12 个回答) 已关闭 6 年前。 我已经编写了 java 到 Json 的代码,同时从页
这个问题在这里已经有了答案: ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn (4 个答案) 关闭 6 年前
我在运行时遇到问题来编译这段代码,这给我一个错误,java.lang.Integer 无法转换为 Java.lang.Double。如果有人帮助我更正此代码,我将非常高兴 double x; pu
我是一名优秀的程序员,十分优秀!