В целом Вы могли бы ожидать, что кортежи будут немного быстрее. Однако необходимо определенно протестировать конкретный случай (если различие могло бы повлиять на производительность программы - помнят, что "преждевременная оптимизация является корнем всего зла").
Python делает это очень легким: timeit является Вашим другом.
$ python -m timeit "x=(1,2,3,4,5,6,7,8)"
10000000 loops, best of 3: 0.0388 usec per loop
$ python -m timeit "x=[1,2,3,4,5,6,7,8]"
1000000 loops, best of 3: 0.363 usec per loop
и...
$ python -m timeit -s "x=(1,2,3,4,5,6,7,8)" "y=x[3]"
10000000 loops, best of 3: 0.0938 usec per loop
$ python -m timeit -s "x=[1,2,3,4,5,6,7,8]" "y=x[3]"
10000000 loops, best of 3: 0.0649 usec per loop
Так в этом случае, инстанцирование является почти порядком величины быстрее для кортежа, но доступ объекта на самом деле несколько быстрее для списка! Таким образом, если Вы создаете несколько кортежей и получаете доступ к ним многие много раз, это может на самом деле быть быстрее для использования списков вместо этого.
, Конечно, если бы Вы хотите к изменение объект, список определенно будет быстрее, так как необходимо было бы создать весь новый кортеж для изменения одного объекта его (так как кортежи неизменны).
Если у вас есть какие-либо переменные-члены с инициализаторами, вы можете установить для них точку останова. Например:
class MyClass {
private int i = 0; // this line can have a breakpoint in Eclipse
}
Если вы можете обойтись, нажав эту точку останова только один раз, то вы можете использовать точку останова загрузки класса :
Вы можете установить класс Точка останова нагрузки, который остановится, когда класс быть загруженным [так в оригинале]. Щелкните класс правой кнопкой мыши в проводнике пакетов Project Проводник или просмотр типов и выберите «Переключить точку останова загрузки класса»
Как следует из названия, эта точка останова будет достигнута при первой загрузке класса, поэтому она сработает только один раз (при условии, что у вас есть только один загрузчик классов). Но в зависимости от ваших потребностей этого может быть достаточно.
Если вам это действительно нужно, установите точку останова метода в одном из других методов класса, выберите точку останова (представление «Точки останова») и экспортируйте ее. Отредактируйте этот файл, чтобы точка останова указывала на стандартный конструктор. Необходимо изменить по крайней мере следующий атрибут (Galileo):
value = "& lt; init & gt ; "
value =" () V "
, возможно, проще также экспортировать точку останова конструктора из другого класса, чтобы увидеть правильные значения. Теперь импортируйте измененный файл, и у вас должна быть точка останова конструктора.
Это хитрость, но у меня сработало ...
Вы всегда можете создать свой собственный конструктор без аргументов и поставить там точку останова. Но если говорить более конкретно, зачем вам там точка останова? Он просто подключится к функции без аргументов super ()
. Если у вас есть код, который вам нужен, поместите точку останова внутри этого конструктора.
Как насчет создания общедоступного конструктора без аргументов и установки для него точки останова? Если это не поможет, не могли бы вы пояснить, почему бы и нет?
вы можете сделать следующее:
public class MyClass {
public MyClass() {
super();
}
}
И затем поставить точку останова на этом. Однако чего вы надеетесь этим добиться?
Лучше всего, вероятно, использовать структуру на основе аспектов для внедрения необходимых функций в классы.
Я думал, что Eclipse предоставляет точку останова конструктора по умолчанию, но, увы, только точка останова, загруженная классом в план.
Какую проблему вам нужно решить?
Вы можете рассмотреть фреймворк YouDebug , чтобы создать сценарий для сеанса отладки, включая точку останова для любого конкретного метода любого класса.
Точки останова - это обработчики обратного вызова событий, которые вызываются, когда в целевой JVM происходит определенное событие. Вы можете создавать точки останова, вызывая методы точки останова для объекта 'vm'. Эти методы принимают закрытие, которое вызывается при возникновении события, и они часто принимают дополнительные аргументы для управления характером точки останова.
Следующий код определяет точку останова в строке 7
org.acme.SubStringTest. java
(или в зависимости от того, в каком исходном файле этот класс определен в:)
vm.breakpoint("org.acme.SubStringTest",7) {
println "I'm at SubStringTest.java line 7";
}