Список форумов Форум Форум
Форум
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   medals.phpНаграды   РегистрацияРегистрация 
 ПрофильПрофиль   СудокуСудоку   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

JavaScript

 
Начать новую тему   Ответить на тему    Список форумов Форум -> Наука и технологии
Предыдущая тема :: Следующая тема  
Автор Сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24421

Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 4:59 pm    Заголовок сообщения: JavaScript Ответить с цитатой

Пока вы маетесь с Питоном, буду маяться с node.js

Раньше его боялся, но неожиданно оказалось, что node.js - это просто хромовский JavaScript движок ("V8") достали из браузера и сделали из него отдельную софтину.

Понятное дело, что без хрома оно теперь и без канваса, html-а и маус-эвентов, но зато есть другие плюшки, которых нет в браузере. Самая большая из них - работа с файлами. Чего мне как раз в JS не хватало (загрузить png-шку в массив - это такая боль. Ну и вместо локалстореджа можно теперь нормально генотипы в файлы сохранять).

Короч, тест производительности



показал, что нода в два с половиной раза быстрее браузерного JavaScript, а стало быть в два с половиной раза пижже!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Slav
Мастер-Флудер I
Мастер-Флудер I


Репутация: +31    

Зарегистрирован: 06.06.2006
Сообщения: 18196
Откуда: КиевЪ
Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 8:40 pm    Заголовок сообщения: Ответить с цитатой

А что оно посчитало? i+рандомное число, пока i <10000000?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24421

Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 9:18 pm    Заголовок сообщения: Ответить с цитатой

Рандом на тот случай, если jit-компилятор оптимизирует цикл и выкинет все, что в теле цикла. С рандомом вроде как не должно выкидывать. Правда переменная q после присваивания не используется и тоже вполне может оптимизировать. Чтобы наверняка не оптимизировало - надо явно использовать значение после вычислений размышляет о_О

Вот так будет более объективный текст:



Нода таки в два раза быстрее. Надо было сразу на ней клеточные автоматы делать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24421

Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 9:39 pm    Заголовок сообщения: Ответить с цитатой

Хотя не однозначно.

Работу с памятью проверил.



Нода почти в два раза отстает.

Ну и такая картинка в диспетчере (Physical Memory Usage):



1 - до запуска скрипта в браузере.
2 - запуск в браузере.
3 - свернул в трей, все равно из памяти полностью не вычистилось.
4 - запуск того же скрипта через ноду. Пожрало почти в два раза больше памяти, но сразу очистило после использования.

Короч, надо тестировать на реальных задачах, что из них быстрее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24421

Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 9:42 pm    Заголовок сообщения: Ответить с цитатой

Если попробовать больше в память напихать - и там и там ломается:

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24421

Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 9:46 pm    Заголовок сообщения: Ответить с цитатой

Если явно записывать в массив boolean - то разница уже не так заметна

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Slav
Мастер-Флудер I
Мастер-Флудер I


Репутация: +31    

Зарегистрирован: 06.06.2006
Сообщения: 18196
Откуда: КиевЪ
Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 9:48 pm    Заголовок сообщения: Ответить с цитатой

послало)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Slav
Мастер-Флудер I
Мастер-Флудер I


Репутация: +31    

Зарегистрирован: 06.06.2006
Сообщения: 18196
Откуда: КиевЪ
Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 9:53 pm    Заголовок сообщения: Ответить с цитатой

не пойму, i=0, в формуле ты i * квадратній корень из 2 и округляешь до целого?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24421

Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 10:14 pm    Заголовок сообщения: Ответить с цитатой

И опять нода победила:



Slav писал(а):
не пойму, i=0, в формуле ты i * квадратній корень из 2 и округляешь до целого?


Квадратный корень использовал для генерации псевдослучайного бита. Опять же, чтобы компилятор не оптимизировал. К тому же вычисление квадратного корня - задача сравнительно сложная (если сравнивать с умножением и делением). Там под капотом по-любому разложение в ряд Тейлора или че-нить в этом духе.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24421

Награды: Нет

СообщениеДобавлено: Чт Сен 02, 2021 11:24 pm    Заголовок сообщения: Ответить с цитатой

Походу все не так просто.

После полутора часа пердолинга удалось таки выяснить, что в node можно изменять количество выделяемой памяти, запуская скрипт с флагом max-old-space-size
Ну и таки выяснил, что увеличение выделяемой памяти до 16 гигов нихуя не помогает:



А потом еще сверху выяснил, что проблема в сборщике мусора.

Надо разобраться, что ему не нравится, но то уже завтра
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Slav
Мастер-Флудер I
Мастер-Флудер I


Репутация: +31    

Зарегистрирован: 06.06.2006
Сообщения: 18196
Откуда: КиевЪ
Награды: Нет

СообщениеДобавлено: Пт Сен 03, 2021 6:53 am    Заголовок сообщения: Ответить с цитатой

Цитата:
К тому же вычисление квадратного корня - задача сравнительно сложная (если сравнивать с умножением и делением).


в твоем кейсе можно сделать ход конем, и вместо вычисления ввести его результат
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24421

Награды: Нет

СообщениеДобавлено: Пт Сен 03, 2021 9:41 am    Заголовок сообщения: Ответить с цитатой

Удобство - можно ноду дебажить через консоль браузера.

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24421

Награды: Нет

СообщениеДобавлено: Пн Сен 06, 2021 7:54 am    Заголовок сообщения: Ответить с цитатой

Rasty писал(а):


Выяснил. Баг ноды. Появился начиная с 11-й версии. До сих пор не пофиксили.

Можно обойти этот баг, если разбить большой массив на маленькие. В принципе, один хер, в асинхронное надо вникать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум -> Наука и технологии Часовой пояс: GMT
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB