То, как вы сейчас это закодировали:
for(i = 0; i < usernames.length && usernames[i].substr(0,searchTerm.length) != searchTerm; i++);
Вы проверяете длину имен пользователей и длину searchTerm, а также получаете подстроку из имен пользователей [i] КАЖДЫЙ раз, когда цикл повторяет цикл
Для любого из них, который вы не ожидаете изменить в течение цикла, вы должны сохранить их в переменной до начала цикла.
Получение значения из переменной намного быстрее, чем проверка свойства объекта или метода.
Так что-то вроде:
for(i = 0,ii=usernames.length,j=searchTerm.length; i < ii && usernames[i].substr(0,j) != searchTerm; i++);