System.currentTimeMillis();
НЕ является хорошим подходом для измерения производительности ваших алгоритмов. Он измеряет общее время, которое вы испытываете, как пользователь, наблюдающий за экраном компьютера. Он включает также время, затрачиваемое на все остальное, работающее на вашем компьютере в фоновом режиме. Это может иметь огромное значение, если на вашей рабочей станции есть много программ.
Правильный подход использует пакет java.lang.management
.
From http: // nadeausoftware.com/articles/2008/03/java_tip_how_get_cpu_and_user_time_benchmarking веб-сайт:
getCpuTime()
метод дает вам сумму:
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
public class CPUUtils {
/** Get CPU time in nanoseconds. */
public static long getCpuTime( ) {
ThreadMXBean bean = ManagementFactory.getThreadMXBean( );
return bean.isCurrentThreadCpuTimeSupported( ) ?
bean.getCurrentThreadCpuTime( ) : 0L;
}
/** Get user time in nanoseconds. */
public static long getUserTime( ) {
ThreadMXBean bean = ManagementFactory.getThreadMXBean( );
return bean.isCurrentThreadCpuTimeSupported( ) ?
bean.getCurrentThreadUserTime( ) : 0L;
}
/** Get system time in nanoseconds. */
public static long getSystemTime( ) {
ThreadMXBean bean = ManagementFactory.getThreadMXBean( );
return bean.isCurrentThreadCpuTimeSupported( ) ?
(bean.getCurrentThreadCpuTime( ) - bean.getCurrentThreadUserTime( )) : 0L;
}
}
Поскольку операторы where являются причиной проблемы с производительностью, вы можете попытаться создать составной индекс для db1.kuchikomi_language
и db1.id
, выполнив это в процессе миграции:
$table->index(['kuchikomi_language', 'id']);
ускорить утверждение where('db1.kuchikomi_language', $language)
.
После этого вы можете попытаться использовать фильтр вместо оператора whereIn('db1.id', $splitted_id))
, если выполнение этой части запроса занимает много времени. Вы можете проанализировать это, используя Laravel Debugbar .
Это даст вам возможность кэшировать результаты до и / или после фильтрации разделенных идентификаторов, в зависимости от того, сколько времени занимает фильтрация.
Разбивка на страницы, вероятно, не является причиной проблемы производительности, но также полезно проанализировать это.