Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.05.2016, 19:31
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

charAt vs charCodeAt
Всем здрассте.

Если возникнет необходимость посимвольно обработать строку, то лучше использовать charCodeAt? Вроде бы charAt создает новую строку, это больше накладных расходов, чем для числа. Или теперь компиляторы умеют всё оптимизировать как надо?
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2016, 19:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Яростный Меч, можно ещё по индексу str[index], не знаю правда быстрее это или нет.
Ответить с цитированием
  #3 (permalink)  
Старый 22.05.2016, 20:05
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

рони,
это тот же charAt, с возвратом строки
Ответить с цитированием
  #4 (permalink)  
Старый 22.05.2016, 22:19
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Яростный Меч, не думаю что есть существенная разница
function charCodeAt(s) {
	for (var t, i = s.length; i--; t = s.charCodeAt(i));
}
function charAt(s) {
	for (var t, i = s.length; i--; t = s.charAt(i));
}
function asArray(s) {
	for (var t, i = s.length; i--; t = s[i]);
}
function test(f) {
	for (var i = 100, s = new Array(100000).join('qwertyuiopasdfghjklzxcvbnm'); i--; f(s));
}

console.time('charCodeAt');
test(charCodeAt);
console.timeEnd('charCodeAt');

console.time('charAt');
test(charAt);
console.timeEnd('charAt');

console.time('asArray');
test(asArray);
console.timeEnd('asArray');
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск