cellForItem (at:) Объект ячейки по соответствующему пути индекса или nil, если ячейка не видна или indexPath находится вне диапазона.
blockquote>
Вы должны использовать модель данных titlesArr для доступа к данным.
См. UICollectionview cellForItem, вернуть nil
.
задан Eric Leschinski 26.04.2015, 14:39
11 ответов
Всегда существует старомодный путь:
long startTime = System.nanoTime(); methodToTime(); long endTime = System.nanoTime(); long duration = (endTime — startTime); //divide by 1000000 to get milliseconds.
ответ дан michaelsnowden 04.10.2019, 11:32
на самом деле, его » new-fashioned» потому что Вы использовали нановремя, который wasn’ t добавленный до java5 – John Gardner 08.10.2008, 12:26
Это (или использующий System.currentTimeMillis ()), кажется, путь it’ s обычно делавшийся в Java. это I’ ve замечен так или иначе. Это все еще мягко удивляет меня это there’ s никакой элегантный встроенный класс, как Таймер t = новый Таймер (); Представьте s в виде строки = t.getElapsed (формат); и т.д. – Ogre Psalm33 09.10.2008, 02:48
Урок 24. Работа с датой и временем. Java Date Time API
нановремя не гарантирует точности лучше, чем currentTimeMillis (), хотя это обычно делает. forums.sun.com/thread.jspa?messageID=9460663 и simongbrown.com/blog/2007/08/20/… – James Schek 09.10.2008, 07:20
Конечно, it’ s всегда важный для запоминания ловушек микросравнительного тестирования, таких как оптимизация компилятора/JVM, которая может исказить результат =8-), – Yuval 08.01.2009, 03:26
Нет никакой потребности в наконец блок как endTime won’ t использоваться, если исключение выдается. – Peter Lawrey 06.05.2009, 09:42
Как «skaffman» сказал, используйте AOP, ИЛИ можно использовать переплетение байт-кода времени выполнения, точно так же, как инструменты покрытия метода модульного теста используют для прозрачного добавления информации о синхронизации к вызванным методам.
, Если Вам в конечном счете удается сделать то, что Вы излагаете в. совместно используйте его назад с сообществом здесь с Вашей задачей Ant / банки.
ответ дан anjanb 04.10.2019, 11:32
В моем случае у меня есть булевская переменная doFoo. Ошибка брошена, если doFoo верен, и нечто не сделано, или если doFoo является ложью, и нечто сделано. Если doFoo является пустым, никакие ошибки не брошены независимо – Bart van Heukelom 30.10.2019, 18:06
long startTime = System.currentTimeMillis(); // code goes here long finishTime = System.currentTimeMillis(); long elapsedTime = finishTime — startTime; // elapsed time in milliseconds
ответ дан Ryan Rodemoyer 04.10.2019, 11:32
Если Вы хотите тактовое стеной время
long start_time = System.currentTimeMillis(); object.method(); long end_time = System.currentTimeMillis(); long execution_time = end_time — start_time;
ответ дан David Nehme 04.10.2019, 11:32
еще лучше — предполагают, что первый элемент и макс. и минута, пока не доказано иначе – warren 14.02.2020, 06:31
Java Algorithms #1: поиск минимального, максимального и среднего значения
Используйте профилировщика (JProfiler, Профилировщик Netbeans, Визуальный VM, Профилировщик Eclipse, и т.д.). Вы получите самые точные результаты и наименее навязчивы. Они используют встроенный механизм JVM для профилирования, которое может также дать Вам дополнительную информацию как отслеживания стека, пути выполнения и более всесторонние результаты при необходимости.
При использовании полностью интегрированного профилировщика, это умирающим образом тривиально для профилирования метода. Щелкните правой кнопкой, Профилировщик-> Добавляют к Корневым Методам. Тогда выполните профилировщика точно так же, как Вы делали тестовый прогон или отладчик.
ответ дан James Schek 04.10.2019, 11:32
Это было также большим предложением и одним из тех » duh» моменты лампочки для меня, когда я прочитал этот ответ. Наш проект использует JDeveloper, но я проверил, и конечно же, it’ s получил встроенного профилировщика! – Ogre Psalm33 09.10.2008, 02:14
От сборки java 7 40 (я думаю) они включали бывший Бортовой самописец JRockits в Java (поиск Управления полетом Java) – Niels Bech Nielsen 18.03.2014, 02:30
Это точно, что я решил сделать — сортируют Массив (убывающий для МАКСА, возрастающего для МИН), и затем захватывают первый элемент. – Eric Belair 14.02.2020, 06:36
Это, вероятно, не то, что Вы хотели, чтобы я сказал, но это — хорошее использование AOP. Хлещите перехватчик прокси вокруг своего метода и сделайте синхронизацию там.
, какой, почему и как из AOP скорее выходит за рамки этого ответа, к сожалению, но это — то, как я, вероятно, сделал бы это.
Редактирование: Вот ссылка к AOP Spring для запущения Вас, если Вы увлечены. Это — самая доступная реализация AOP, с которым Iive сталкиваются для Java.
кроме того, учитывая всех очень простые предложения else, я должен добавить, что AOP для того, когда Вы не хотите, чтобы материал как синхронизация вторгся в Ваш код. Но во многих случаях, такой простой и легкий подход прекрасен.
ответ дан Buhake Sindi 04.10.2019, 11:32
Вот учебное руководство о том, как сделать это с Spring: veerasundar.com/blog/2010/01/… – David Tinker 04.01.2011, 23:05
There’ s немного отсутствия кода: » else» часть » если (массив [запускают] < массив [start+1]) » блок. – Brilliand 14.02.2020, 06:37
Существует несколько способов сделать это. Я обычно отступаю только к использованию чего-то вроде этого:
long start = System.currentTimeMillis(); // . do something . long end = System.currentTimeMillis();
или то же самое с System.nanoTime ();
Для чего-то больше на стороне сравнительного тестирования вещей, кажется, также существует этот: http://jetm.void.fm/ Никогда не пробовал его все же.
ответ дан Horst Gutmann 04.10.2019, 11:32
Да, возможно, it’ s быстрее, с другой стороны возможно, it’ s нет. Я думаю, что этот ответ был бы намного лучше с фактическим сравнением этих двух методов. – laurent 14.02.2020, 06:31
Просто маленькое скручивание, если Вы не используете инструменты и хотите к методам времени с низким временем выполнения: выполняйте его много раз, каждый раз удваивая количество раз, это выполняется, пока Вы не достигаете секунды, или около этого. Таким образом время Вызова к System.nanoTime и т.д, ни точность System.nanoTime действительно влияют на результат очень.
int runs = 0, runsPerRound = 10; long begin = System.nanoTime(), end; do < for (int i=0; iwhile (runs < Integer.MAX_VALUE / 2 1000000000L >end — begin); System.out.println(«Time for timedMethod() is » + 0.000000001 * (end-begin) / runs + » seconds»);
, Конечно, протесты об использовании настенных часов применяются: влияния JIT-компиляции, несколько потоков / обрабатывают и т.д. Таким образом, необходимо сначала выполнить метод много из времен сначала, такой, что JIT-компилятор делает свою работу, и затем повторяет этот тест многократно и занимает самое низкое время выполнения.
ответ дан Hans-Peter Störr 04.10.2019, 11:32
Вы действительно понимаете, что сортировка берет путь больше времени, чем простое сканирование списка однажды. – Eclipse 14.02.2020, 06:36
Блог
Java-программа для расчета времени выполнения методов
- Запись опубликована: 3 июня, 2023
- Рубрика записи: Java
- Комментарии к записи: 0 комментариев
В этом примере мы научимся вычислять время выполнения обычных методов и рекурсивных методов в Java.
Чтобы понять этот пример, вы должны обладать знаниями по следующим темам программирования на Java:
- Методы Java
- Рекурсия Java
Пример 1: Java-программа для вычисления времени выполнения метода
class Main < // create a method public void display() < System.out.println(«Calculating Method execution time:»); >// main method public static void main(String[] args) < // create an object of the Main class Main obj = new Main(); // get the start time long start = System.nanoTime(); // call the method obj.display(); // get the end time long end = System.nanoTime(); // execution time long execution = end — start; System.out.println(«Execution time: » + execution + » nanoseconds»); >>
Выпуск
Calculating Method execution time: Execution time: 656100 nanoseconds
В приведенном выше примере мы создали метод с именем . Метод выводит инструкцию на консоль. Программа вычисляет время выполнения метода. display() display()
Здесь мы использовали метод класса. Метод возвращает текущее значение работающей JVM в наносекундах. nanoTime() System nanoTime()
Пример 2: Вычисление времени выполнения рекурсивного метода
class Main < // create a recursive method public int factorial( int n ) < if (n != 0) // termination condition return n * factorial(n-1); // recursive call else return 1; >// main method public static void main(String[] args) < // create object of Main class Main obj = new Main(); // get the start time long start = System.nanoTime(); // call the method obj.factorial(128); // get the end time long end = System.nanoTime(); // execution time in seconds long execution = (end — start); System.out.println(«Execution time of Recursive Method is»); System.out.println(execution + » nanoseconds»); >>
Выпуск
Execution time of Recursive Method is 18600 nanoseconds
В приведенном выше примере мы вычисляем время выполнения рекурсивного метода с именем . factorial()
Вам также может понравиться
Java-программа для замены двух чисел
5 июня, 2023
Программа Java для перебора каждого символа строки.
3 июня, 2023
Java-программа для перебора ArrayList с использованием лямбда-выражения
3 июня, 2023
Источник: aurumcapital.ru
Рассчитать время выполнения Java-программы
Ответы там больше сосредоточены на использовании nanotTime () / currentTimeInMillis () для вычисления времени выполнения, но при этом не учитывается время планирования ОС. — person Kakarot nbsp schedule 23.02.2014
Попробуйте этот механизм: stackoverflow.com / questions / 3382954 / — person yegor256 try < Thread.sleep(7000); >catch (InterruptedException e) < e.printStackTrace(); >Instant end = Instant.now(); System.out.println(Duration.between(start, end)); >
И он печатает: PT7.001S
person akhil_mittal schedule 22.06.2015
Старомодный способ . Разбить на методы
long startTime = System.nanoTime(); methodToTime(); long endTime = System.nanoTime(); long duration = endTime — startTime;
person KRUKUSA schedule 23.02.2014
Это подход, при котором мы обычно разбиваем на небольшие функции, чтобы избежать последствий планирования. Но если есть что-то, что нельзя сломать, и на вычисление уходит значительное время, то в конечном итоге мы сталкиваемся с проблемой правильного расчета времени. — person Kakarot; 23.02.2014
Я уверен, что если бы вы добавили все эти методы расчета, вы бы получили примерно такое же время, как если бы это был один. Если это профилирование, которое вам нужно сделать в вашей программе, я бы предложил использовать инструмент профилирования NetBean, но для общего времени выполнения System.currentTimeMillis (); должно быть достаточно, чтобы получить ту информацию, которую вы хотели — person KRUKUSA; 23.02.2014
Источник: questu.ru