В соревнованиях по программированию одним из критериев соревнования может быть то, насколько быстро код участника может обработать какой-либо текстовый входной файл.
Обычно вы увидите, что такие вещи (класс MyScanner
) используются, потому что разработчик считает, что это дает ему или ей "преимущество" в производительности по сравнению со стандартными классами. Люди, которые «увлекаются» конкурентным программированием, разработают свои собственные наборы инструментов ... чтобы улучшить свои преимущества.
Не ясно, будет ли этот класс действительно работать лучше в целом , или будет ли вклад в общую производительность значительным. Нужно было бы:
- написать несколько общих тестов и
- профилировать решение проблемы конкуренции.
Но в каком-то смысле это не имеет значения. Что действительно важно, так это то, что человек, который использует этот код , считает, лучше. В любом случае, он делает то, что они считают необходимым. Цели оправдывают средства.
С другой стороны, если бы вы делали подобные вещи в производственном коде, вы, вероятно, оказали бы медвежью услугу вашему проекту / работодателю:
- Маловероятно, что подобные вещи помогут в реальных приложениях.
- Вы бы добавили техническую нагрузку в виде ненужного / возможно ненадежного кода для ваших коллег / преемников.
Вы должны прибегать к подобным вещам, только если профилирование вашего приложения показывает, что сканирование является существенным узким местом производительности.
Даже тогда подобные вещи, скорее всего, неправильны:
if (next != null) {
return Integer.parseInt(next);
} else {
return null;
}
, поскольку он может быть источником неожиданных NPE.