我只是想知道为什么在使用Java中的通用列表和数组时性能如此糟糕。
我最初使用以下内容创建了一个通用数组,但创建包含50个元素的数组需要2秒钟。
final T[] returnClasses = (T[]) Array.newInstance(classOfT, data.getCount());
在阅读了许多区域后,说java.lang.reflect.Array不应该被使用,因为它没有被优化,而是使用Lists代替我改变了我的代码。
List<T> returnDataList = new ArrayList(data.getCount());
此次更改后没有性能提升。
将时间与创建显式类型列表进行比较时,返回的时间始终为0ms
使用泛型时创建集合(必须保留顺序)的最有效方法是什么?
如果它有所不同,则该方法被声明为
public <T> List<T> method(Data data, Class<T> classOfT)
使用以下代码
完成记录Calendar now = Calendar.getInstance();
List<T> returnDataList = new ArrayList(data.getCount());
Log.d("TEST", "create array time = " + (Calendar.getInstance().getTimeInMillis() - now.getTimeInMillis()));
now = Calendar.getInstance();
List<Object> test = new ArrayList(data.getCount());
Log.d("TEST", "create test array time = " + (Calendar.getInstance().getTimeInMillis() - now.getTimeInMillis()));
我理解这种形式的日志记录不是正确性能测试的正确方法,但它是一种非常简单的方法来了解两个非常基本的代码片段之间的差异。