Permitir que o navegador use mais núcleos

1

Eu escrevi um algoritmo com JavaScript. Quando eu o executo no Google Chrome, demora cerca de 30min, o que é bastante longo.
Quando abro o gerenciador de tarefas durante a computação, percebo que o Chrome ocupa cerca de 25% da minha CPU, portanto, um dos meus quatro núcleos.

É possível permitir que o Chrome use mais CPUs, digamos, 3 de 4, para que o cálculo seja executado mais rapidamente?

PS: não me importo de usar qualquer outro navegador (por exemplo, Firefox) se o Chrome não oferecer suporte a isso.

    
por user584127 18.04.2016 / 02:07

1 resposta

4

O JavaScript padrão é uni-threaded: ele pode executar apenas um programa em uma CPU (core).

Para o que você está descrevendo, você provavelmente teria que particionar seu conjunto de dados em partes e criar um JavaScript Web Worker em separado, executando seu algoritmo para processar cada fragmento. Isso pressupõe que você tenha um conjunto de dados estruturalmente uniforme. (Cuidado com as condições de contorno).

O uso de Web Workers requer efetivamente a compreensão de como reescrever algoritmos seriais como paralelos e outros aspectos da programação multi-thread - todos os quais exigem habilidades avançadas de programação.

Os Web Workers JavaScript são unidades de execução independentes autônomas (threads), separadas e isoladas do programa principal e de uma outra. A comunicação entre o programa principal e os Trabalhadores Web, e entre os próprios Trabalhadores da Web, é através de mensagens de dados baseadas em eventos.

O sistema operacional do host pode executar threads individuais do Web Worker em núcleos separados, permitindo até 100% de utilização da capacidade da CPU.

Os Web Workers são projetados para serem apenas unidades de computação. Eles não têm acesso ao DOM ou a qualquer componente do navegador relacionado ao DOM, como janela . (Isso evita todos os tipos de possíveis problemas com a serialização do acesso a eles.) Assim, qualquer saída a ser exibida deve ser passada de volta de um Worker para o thread principal.

Todos os navegadores recentes oferecem algum grau de suporte para os Web Workers. A tabela na parte inferior da página da API da Web Worker da Mozilla, link , mostra o navegador individual e suporte de versão para os vários recursos do Web Worker.

Uma boa cartilha sobre o uso de Web Workers:

link

    
por 18.04.2016 / 08:05