Время выполнения скрипта
var time = performance.now(); for(var i = 1000000000; i; i--) Math.random(); time = performance.now() - time; console.log('Время выполнения = ', time); Хромоподобные браузеры пыхтят 6900мс а FF показывает какие то фантастические 920мс это что за прикол? |
|
Что-то в хроме быстрей, что-то в ФФ, и порой очень сильно.
|
Цитата:
|
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <select> <option>1 поток</option> <option>2 потока</option> <option>3 потока</option> <option>4 потока</option> <option>5 потоков</option> <option>6 потоков</option> <option>7 потоков</option> <option>8 потоков</option> <option>9 потоков</option> <option>10 потоков</option> <option>11 потоков</option> <option>12 потоков</option> <option>13 потоков</option> <option>14 потоков</option> <option>15 потоков</option> <option>16 потоков</option> <option>17 потоков</option> <option>18 потоков</option> <option>19 потоков</option> <option>20 потоков</option> </select> <button>Старт</button> <script> var sel = document.querySelector('select'); document.querySelector('button').onclick = ()=> { var potok = sel.selectedIndex+1, flag = 0, time = performance.now(), work = [], end = []; for (var i = 0; i < potok; i++){ work[i] = new Worker(URL.createObjectURL(new Blob([workerRunner.toString().replace(/^function .+\{?|\}$/g, '')],{ type:'text/javascript' }))); end[i] = 0; } work.forEach((el,i)=>{ el.postMessage([potok, i]); el.onmessage=e=>{ end[i] = e.data; if(!end.includes(0)) { el.terminate(); time = performance.now() - time; console.log('Время выполнения = ', time); } }; }); }; function workerRunner() { self.onmessage = e => { w = 1000000000, a1 = Math.floor(w/e.data[0]*e.data[1]), a2 = Math.floor(w/e.data[0]*(e.data[1]+1)); for(var i = a1; i<a2; i++) Math.random(); self.postMessage(1); }; } </script> </body> </html> результат радует 90-120 мс выполняется в FF (у меня) потоки лучше всего устанавливать в соответствии с количеством физических ядер Если установить максимальное количество потоков CPU грузится на 100% |
Цитата:
|
laimas,
В данном случае экспериментально так быстрей работает. |
Цитата:
Та же Windows не может эффективно использовать множество ядер, не говоря уже о приложениях. У меня в системе установлено всего одно приложение, которое эффективно загружает все 8 ядер системы, это Adobe Premiere. Но еще более прирост производительности получается когда это ПО задействует десятки ядер GPU, правда если видеокарта входит в список поддерживаемых. С недавних пор и браузеры стали использовать ядра GPU, если возможно, но чтобы они эффективно управляли ядрами CPU, что-то не слышал. |
Цитата:
Цитата:
Ну, а за лекцию спасибо =) |
j0hnik,
вы путаете многопоточность как эмуляцию распараллеливания задачи со множеством ядер, которые могут это делать. А насчет тысячи ядер, так на рынке и супер компьютеры есть, но вряд ли вы как перчатки можете поменять свою бюджетную видеокарту даже на более со скромным числом ядер, но производительную с нехилой ценой. Живите реалиями, зачем фантазировать. А графические ядра использовать легче уже потому, что существуют готовые программно-аппаратные комплексы. Ищите в сети - CUDA. |
Часовой пояс GMT +3, время: 10:27. |