PEIYANGXINQU Ответов: 0

Почему я могу снизить эффективность в соответствии с добавлением конечного модификатора метода?


Мой учитель говорит, что мы можем использовать финал для повышения эффективности.Я пытаюсь сделать тест, но нахожу, что он может снизить эффективность в соответствии с добавлением окончательного модификатора метода. Мой тест выглядит так:

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 он есть, вам нужно будет провести некоторые исследования на эту тему.

0 Ответов