Запускаю вот такой код, хочу проверить может ли генератор рандомных чисел выдать одинаковое значение, по итогу я получаю скрипт, который выполняется 1 минуту, хотя на C++ точно такой же код выполняется примерно за 1 секунду.
for (var i = 0, array = []; i <= 10000000; i++) {
array.push(Math.random());
if(i === 10000000) {
console.log(array.length, 'it is length');
array1 = [];
array.forEach((item, id) => {
array.forEach((_item, _id) => {
if(item === _item && id !== _id) {
array1.push(item);
}
})
})
console.log(array1);
}
}
JavaScript
Почему JavaScript очень медленный?
Прировнял нету скорость надо сравнивать то что я напишу на JavaScript за час на си замёт несколко дней Языки разного уровня их неьлзя сравнивать по таким показателям.
И код у тебя неоптимальный намного всё проще можно написать а про случайные числа уже довно всё ясно если ты берёшь к примеру от 1 до 10 то через 40 сорок повторений вероятность что все числа выпадут равна 99,999% если конечно генератор правильный ты даже округление непроизводиш до ишачей паски будешь ждать при таком подходе обычно берётся диапазон допустим от 1 до 1000 и запускается цикл сколько раз целые числа выпадут Обычно такие деймтвия нужны для проверки самописных функций для поиска дефекта Math.random() уже тестирован протестирован тысячу раз Могу сказать точно что случайность у него на уровне идеальной
стандартная функция для определенного диапазона
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
⚤
И код у тебя неоптимальный намного всё проще можно написать а про случайные числа уже довно всё ясно если ты берёшь к примеру от 1 до 10 то через 40 сорок повторений вероятность что все числа выпадут равна 99,999% если конечно генератор правильный ты даже округление непроизводиш до ишачей паски будешь ждать при таком подходе обычно берётся диапазон допустим от 1 до 1000 и запускается цикл сколько раз целые числа выпадут Обычно такие деймтвия нужны для проверки самописных функций для поиска дефекта Math.random() уже тестирован протестирован тысячу раз Могу сказать точно что случайность у него на уровне идеальной
стандартная функция для определенного диапазона
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
⚤
Лол!
Мурат Кадыров
https://jsbin.com/juqafeg/edit?js,output
Дело даже не в тормознутости и Вашем неоптимальном коде...
Дело в том что - да "ВНЕЗАПНО" может быть одинаковое значение. К гадалке не ходи =)
С чего Вы взяли что генератор выдает УНИКАЛЬНЫЕ значения? Генератор всего-лишь генератор да и со "случайностью" не всё так просто.... Частенько (мягко говоря =) это псевдослучайность, а в случае старом C/C++ с srand/rand чаще всего конкретная рекуррентая формула, которая зависит от "семени" => в ряде случаев можно "предугадать" следующее "случайное" значение. В более поздних версиях C/C++ рекомендуется использовать другие функции. http://www.cplusplus.com/reference/random/
Дело в том что - да "ВНЕЗАПНО" может быть одинаковое значение. К гадалке не ходи =)
С чего Вы взяли что генератор выдает УНИКАЛЬНЫЕ значения? Генератор всего-лишь генератор да и со "случайностью" не всё так просто.... Частенько (мягко говоря =) это псевдослучайность, а в случае старом C/C++ с srand/rand чаще всего конкретная рекуррентая формула, которая зависит от "семени" => в ряде случаев можно "предугадать" следующее "случайное" значение. В более поздних версиях C/C++ рекомендуется использовать другие функции. http://www.cplusplus.com/reference/random/
Мурат Кадыров
В яваскрипте, асинхронная генерация рандомных чисел гарантирует их уникальность (а синхронная, напротив, вероятно создаст дубли) - так как RNG завязан на значении времени.
Это говнокод: крайне не оптимальный способ решения задачи (независимо от языка).
Почему медленней:
- JS в любом случае медленней, хотя бы из-за отсутствия статической типизации.
- JS более сложно работает с массивами.
- Тут используется forEach вместо цикла. forEach может быть медленней чем цикл, поскольку forEach вызывает функцию на каждой итерации цикла. Точнее, должен вызывать. Поскольку forEach - встроенная функция, возможно JS тут применяет оптимизацию и не делает вызов функции на каждой итерации цикла.
Почему медленней:
- JS в любом случае медленней, хотя бы из-за отсутствия статической типизации.
- JS более сложно работает с массивами.
- Тут используется forEach вместо цикла. forEach может быть медленней чем цикл, поскольку forEach вызывает функцию на каждой итерации цикла. Точнее, должен вызывать. Поскольку forEach - встроенная функция, возможно JS тут применяет оптимизацию и не делает вызов функции на каждой итерации цикла.
Valera Zinchenko
я тут кстати давичи делал на каверсе чтоб видео без фона шло если невкурсе то в каверс чтобы работать с пикселями там надо делать битовую маску эта гигантский массив с четырьмя байтами на каждый бит так вот чтоб удалить фон
сперва надо с видео загрузить кадр в каверс > получить битовую маску обработать каждый бит согласно алгоритму в цикле > наложить битовую маску на каверс И вся эта галликанская работа занимает всего 20 миле секунд а для полноценного воспроизведения достаточно 40 хотя и при 80 идёт неплохо думал что займёт больше времени а не 20 мс Интересно на Си сколько займёт времени чтоб что то подобное написать я написал за один вечер
⚤
сперва надо с видео загрузить кадр в каверс > получить битовую маску обработать каждый бит согласно алгоритму в цикле > наложить битовую маску на каверс И вся эта галликанская работа занимает всего 20 миле секунд а для полноценного воспроизведения достаточно 40 хотя и при 80 идёт неплохо думал что займёт больше времени а не 20 мс Интересно на Си сколько займёт времени чтоб что то подобное написать я написал за один вечер
⚤
Ну так эту задачу можно выполнять и на сервере, а там можно хоть тот же C++ использовать. Обычно для задач, решаемых в рамках браузера, не критична производительность.
Сравнивать производительность JS и C++ глупо.
Виталичка Он Такой Один
Почему глупо? По-моему, очень любопытно. Есть сайт, посвящённый сравнению производительности языков
https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/node-gpp.html
На глаз: JS медленней в 10 раз. Питон гораздо медленней чем JS.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/node-gpp.html
На глаз: JS медленней в 10 раз. Питон гораздо медленней чем JS.
Потму что JS придумали не для скорости.
Если нужна скорость, надо как можно меньше в реалтайме создавать новые объекты в динамической памяти и очищать память. Это, во-первых, медленные операции, во-вторых, ошибка в них приведет к утечке памяти и потом такую ошибку трудно найти.
Насчет скорости JavaScript - скорость отличная для скриптового языка. На этом языке можно любую графику программировать.
Насчет скорости JavaScript - скорость отличная для скриптового языка. На этом языке можно любую графику программировать.
Смотря где ты его выполняешь. Если в браузере, то конечно он медленный. Но V8 может даже с плюсами посоревноваться в скорости
Турсун Байев
Спасибо, повеселил: V8 - это интерпретатор JavaScript в Chrome и прочих Chromium based движках. И Node.JS - это в тот же самый браузерный движок - работающий с точно такой же скоростью, как и JavaScript в браузере.
Виталичка Он Такой Один
В браузере разве другой движок?
Сравнение C++ с Node.js:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/node-gpp.html
Результат предсказуем.
Сравнение C++ с Node.js:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/node-gpp.html
Результат предсказуем.
кривой код, поэтому тормозит
Похожие вопросы
- Почему javascript не добавляет класс к body через getattribute. Скрин тут
- Почему Javascript вдруг стал таким востребованным и более универсальным решением? Что в нем такого особенного?
- Есть ли аналоги JavaScript?
- С чего начать учить JavaScript?
- Подскажите книги для изучения javascript? Хочу начать изучать веб программирование javascript подойтет для начала?
- Зачем нужен prototype в JavaScript?
- Тяжело ли выучить JavaScript?
- Как создать квадрат через JavaScript?
- Смотрел я тут учебный курс Евгения Попова по javascript. Удивил он (Попов) в паре мест...
- Имеет ли смысл изучать JavaScript если я полный ноль в веб программировании?