Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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
Репутация: +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
Репутация: +31
Зарегистрирован: 06.06.2006 Сообщения: 18196 Откуда: КиевЪ Награды: Нет
|
Добавлено: Чт Сен 02, 2021 9:48 pm Заголовок сообщения: |
|
|
послало) |
|
Вернуться к началу |
|
|
Slav Мастер-Флудер 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
Репутация: +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-й версии. До сих пор не пофиксили.
Можно обойти этот баг, если разбить большой массив на маленькие. В принципе, один хер, в асинхронное надо вникать. |
|
Вернуться к началу |
|
|
|