相关疑难解决方法(0)

为什么Android下的注释会出现性能问题(速度慢)?

我是ORMLite的主要作者,它在类上使用Java注释来构建数据库模式.我们的软件包的一个重大启动性能问题原来是在Android 1.6下调用注释方法.我看到3.0的相同行为.

我们看到以下简单的注释代码是令人难以置信的 GC密集型和真正的性能问题.在快速的Android设备上,1000次调用注释方法需要几乎一秒钟.在我的Macbook Pro上运行的相同代码可以同时执行2800万(sic)调用.我们有一个注释,里面有25个方法,我们希望每秒做50多个.

有谁知道为什么会这样,如果有任何解决方法?当然,ORMLite可以在缓存这些信息方面做些什么,但我们可以做些什么来"修复"Android下的注释?谢谢.

public void testAndroidAnnotations() throws Exception {
    Field field = Foo.class.getDeclaredField("field");
    MyAnnotation myAnnotation = field.getAnnotation(MyAnnotation.class);
    long before = System.currentTimeMillis();
    for (int i = 0; i < 1000; i++)
        myAnnotation.foo();
    Log.i("test", "in " + (System.currentTimeMillis() - before) + "ms");
}
@Target(FIELD) @Retention(RUNTIME)
private static @interface MyAnnotation {
    String foo();
}
private static class Foo {
    @MyAnnotation(foo = "bar")
    String field;
}
Run Code Online (Sandbox Code Playgroud)

这导致以下日志输出:

I/TestRunner(  895): started: testAndroidAnnotations
D/dalvikvm(  895): GC freed 6567 objects / …
Run Code Online (Sandbox Code Playgroud)

java performance android garbage-collection annotations

50
推荐指数
3
解决办法
1万
查看次数

ORMLite在Android上性能不佳?

我正在开发一个Android应用程序,并尝试使用ORMLite,但性能似乎非常差.还有其他人经历过这个吗?

或者我做错了什么?

编辑

不,我没有进行任何连接,并且所有查询都是使用索引键作为参数进行的.但是数据集非常大,而且有很多比较.

没试过用纯SQLite ...

sqlite android ormlite

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