Почему я могу снизить эффективность в соответствии с добавлением конечного модификатора метода?
Мой учитель говорит, что мы можем использовать финал для повышения эффективности.Я пытаюсь сделать тест, но нахожу, что он может снизить эффективность в соответствии с добавлением окончательного модификатора метода. Мой тест выглядит так:
Classstest1:
публичный класс Classstest1 {
public final String getName() {
вернуть имя;
}
public final void setName(строковое имя) {
this.name = имя;
}
наименование частная строку ;
}
Classstest2:
публичный класс Classstest2 {
общественная строка getname() {
вернуть имя;
}
public void setName(строковое имя) {
this.name = имя;
}
наименование частная строку ;
}
Основной Метод Испытания:
публичный статический пустота главный(строка[] аргументы) {
ClassTest1 ct1=новый ClassTest1();
ClassTest2 ct2=новый ClassTest2();
Длительный T1=система.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
ст1.метод getname();
}
Длительное время T2=система.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
ст2.метод getname();
}
Долго Т3=система.currentTimeMillis();
Системы.из.код println("добавить окончательной украсить время стоимость:"+(Т2-Т1));
Системы.из.код println("не добавлять окончательной украсить временных затрат:"+(Т3-Т2));
}
Зачем добавлять окончательной украсить стоить больше времени, чем не добавить последний метод?
Что я уже пробовал:
Я сделал тест, но не могу найти причину.
Richard MacCutchan
Потому что вы измеряете время настенных часов, а не чистое время выполнения, поэтому результаты обычно ничего не значат. Кроме того, вы никогда не устанавливали никаких значений имен ни в одном из своих классов.
PEIYANGXINQU
Можете ли вы сказать мне, как получить чистое время выполнения?
Richard MacCutchan
Я не уверен, что у Java он есть, вам нужно будет провести некоторые исследования на эту тему.