当我在Android应用程序中使用Reflection api时,我会有很大的性能损失吗?

时间:2013-02-25 17:46:46

标签: java android reflection methods

我想实现一个功能图。我有几个函数用于在SQLite数据库(InsertUSER_Data()InsertMessages())中插入不同的数据,依此类推。我想创建一个Map并通过一个键命令调用一个特定的函数。正如我在搜索过程中看到的那样,有两种方法:匿名类和反射。 (例如,这里How to call a method stored in a HashMap? (Java))我非常喜欢基于Reflection API(通过方法类型)的方法:Map <String, Method>而不是仅使用实现接口的匿名类。

但我有疑问:在这个解决方案中,这是一个非常大的性能开销,特别是如果我在Android中使用它还是不是很重要?详细解释将非常有用。

1 个答案:

答案 0 :(得分:3)

我无法回答你的确切观点,但一些基础知识可能有所帮助:

  • 事先了解表演的艺术是微妙,困难和危险的。最好的方法是测量两个解决方案之间的差异(可能像System.currentTimeMillis()一样简单。)
  • 根据经验,与其他内容(如文件或数据库acesses),远程调用甚至是某些UI元素相比,“在内存中”传递的时间在性能方面往往不太重要。 / LI>
  • 除非您打算(b?)拨打数百万电话,否则我真诚地怀疑小地图会产生影响。但是,再一次,不要相信我,测试它。

最后,您的问题是否可以简单地使用接口来解决?这将消除此问题,并且通常更容易编写,读取和调试。类似的东西:

interface Actionable { Result doStuff(Param p); }

你的各种函数类可以实现,之后可以调用,而不知道究竟是什么。