Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.05.2018, 23:39
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

somejs,
у меня вообще ваш тест по нулям периодически показывает.

name time = 0

dataset time = 0

время настолько мало
Ответить с цитированием
  #12 (permalink)  
Старый 18.05.2018, 23:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,137


select.info fastest
Ответить с цитированием
  #13 (permalink)  
Старый 18.05.2018, 23:42
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от рони
select.info fastest
неуловил
Ответить с цитированием
  #14 (permalink)  
Старый 18.05.2018, 23:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,137

j0hnik,
протестируй

select.info =  ["a", "b", "c"] ;


вместо select.dataset.info = "{'a':'a','b':'b','c':'c'}";
Ответить с цитированием
  #15 (permalink)  
Старый 19.05.2018, 00:42
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
Быстрей. если ему видимость в атрибутах не нужна, вполне можно использовать.
Ответить с цитированием
  #16 (permalink)  
Старый 19.05.2018, 02:00
Новичок на форуме
Отправить личное сообщение для somejs Посмотреть профиль Найти все сообщения от somejs
 
Регистрация: 18.05.2018
Сообщений: 9

Спасибо за тэги - с ними я еще не разобрался.
Да, по 20-40 итераций делал и повторюсь, в отдельных файлах было, даже если менять местами в одном, то считывать с класса и резать быстрее. Тестирую на слабом (по нынешним меркам) железе. Где-то на 5-7 раз датасет работает как класс, а то и чуть быстрее, но даже при 40 итерациях среднее не дотягивает до класса. Все же датасет работает медленнее. Вот, статья, в которой это тоже упоминается:
https://intuio.at/blog/dont-use-data...ments-with-js/

Меня удивили показания бенчмарка, ибо на реальной машине датасет не лидирует. Почему так происходит - не понятно. В целом, вы правы, на современных компьютерах это все милисекунды, которые не заметны, но ради оптимизации хотелось все же разобраться в этом.
Ответить с цитированием
  #17 (permalink)  
Старый 19.05.2018, 02:11
Новичок на форуме
Отправить личное сообщение для somejs Посмотреть профиль Найти все сообщения от somejs
 
Регистрация: 18.05.2018
Сообщений: 9

Сообщение от рони Посмотреть сообщение
j0hnik,
select.info =  ["a", "b", "c"] ;

вместо select.dataset.info = "{'a':'a','b':'b','c':'c'}";
Мне было удобней использовать объект, но для чистоты эксперимента исправил на массив. Время не улучшилось в сторону датасета:

name time = 0
dataset time = 15.199999994365498

С итерацией в 50:
name time = 0.20000000222353265
dataset time = 60.199999999895226
Ответить с цитированием
  #18 (permalink)  
Старый 19.05.2018, 02:15
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<html>

<html>

<body>
<p id="p1"></p>
<p id="p2"></p>
<p id="p3"></p>
<script type="text/javascript">
var select = document.createElement("select"); 
select.classList.add("a-b-c"); 
select.id = "s"; 
select.dataset.info = ["a", "b", "c"]; 
select.info = ["a", "b", "c"]; 
document.body.appendChild(select); 
var el = document.getElementById('s');

var p2 = performance.now();
for (var i = 0; i < 100000; i++) el.dataset.info;
s2 = performance.now() - p2;

var p1 = performance.now();
for (var i = 0; i < 100000; i++) el.className.split("-");
s1 = performance.now() - p1;


var p3 = performance.now();
for (var i = 0; i < 100000; i++) el.info;
s3 = performance.now() - p3;



document.getElementById('p2').innerHTML="dataset time = "+s2;
document.getElementById('p1').innerHTML="name time = "+s1;
document.getElementById('p3').innerHTML="info = "+s3;
</script>
</body>
</html>

//========================
хром
name time = 20.700000000942964
dataset time = 10.800000003655441
info = 1.5999999959603883
//========================
FF
name time = 4.284999999999997
dataset time = 12.164999999999992
info = 1.2399999999999807

Последний раз редактировалось j0hnik, 19.05.2018 в 02:41.
Ответить с цитированием
  #19 (permalink)  
Старый 19.05.2018, 02:17
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

somejs, походу вы в FF тестируете, а я в хром вот результаты и отличаются

Последний раз редактировалось j0hnik, 19.05.2018 в 02:34.
Ответить с цитированием
  #20 (permalink)  
Старый 19.05.2018, 02:32
Новичок на форуме
Отправить личное сообщение для somejs Посмотреть профиль Найти все сообщения от somejs
 
Регистрация: 18.05.2018
Сообщений: 9

Ой, извиняюсь. Да, - timex (правка при слиянии, добавил х, чтобы не было вмешательств).
Так получается при 70:
name time = 0.09999999747378752
dataset time = 0.09999999747378752

В принципе, разницы нет.

Спасибо за ссылку на бенчмарк, кстати.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Javascript чат-бот FanAizu Общие вопросы Javascript 5 30.01.2014 03:00
подключать jquery-ui.custom.js или jquery-ui.custom.min.js? Faab jQuery 4 11.10.2013 20:53
Игра орел или решка на jquery. В любом случаи выводит вы проиграли! Dimaz jQuery 4 25.12.2009 15:04
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20
Переменная от переменной или как к имени переменной конкатенировать значение другой Aderba jQuery 5 12.11.2008 15:25