Java/Android:I不';我不明白为什么这比预期的要慢

Java/Android:I不';我不明白为什么这比预期的要慢,java,android,Java,Android,我有这个方法: @DebugLog private synchronized int insertInOrderedFromBottom(ItemWithTime itemWithTime, ArrayList<ItemWithTime> array) { long start = System.currentTimeMillis(); if (itemWithTime == null || itemWithTime.getDateTime() == null) re

我有这个方法:

@DebugLog
private synchronized int insertInOrderedFromBottom(ItemWithTime itemWithTime, ArrayList<ItemWithTime> array) {
    long start = System.currentTimeMillis();
    if (itemWithTime == null || itemWithTime.getDateTime() == null) return -1;
    if (array == null) return -1;
    int arraySize = array.size();
    for (int i = arraySize - 1; i >= 0; i--) {
        if (itemWithTime.getDateTime().isBefore(array.get(i).getDateTime())) {
            i++;
            array.add(i, itemWithTime);
            long end = System.currentTimeMillis();
            Log.d(TAG,"insertInOrderedFromBottom inside took "+(end-start));
            return i;
        }
    }
    array.add(itemWithTime);
    long end = System.currentTimeMillis();
    Log.d(TAG,"insertInOrderedFromBottom inside took "+(end-start));
    return array.size();
}
  • 这里的日志显示需要10-15个磨坊
发生了什么事?我错过了什么

编辑


我尝试过没有同步,也没有区别。

android日志功能相当慢。因此,如果在内部循环中有一个打印时间差的日志,那么它本身将花费毫秒数。因此,最后的输出计时反映了在内部循环中执行Log.d所需的时间。android日志函数相当慢。因此,如果在内部循环中有一个打印时间差的日志,那么它本身将花费毫秒数。因此,最后的输出计时反映了在内部循环中执行Log.d所需的时间

我不明白您的要求。你首先写‘他们说完成这个方法需要大约0百万’(谁这么说?)。稍后,您自己的日志显示需要10-15毫秒。您现在的问题到底是什么?日志上说:
Log.d(标记“insertinoderedfrombottom,loop take”+(end-start)+“ms”)Log.d(标记“insertinoderedfrombottom,loop take”+(end-start)+“ms”)start = System.currentTimeMillis();
insertInOrderedFromBottom(datum, items);
end = System.currentTimeMillis();
Log.d(TAG, "insertInOrderedFromBottom invoication took " + (end - start) + " ms");