나는 최근에 this article이 JavaScript의 기능을 조작하는 능력을 사용하여 전세계의 모든 컴퓨터가 인터넷의 모든 정보를 처리하는 데 작은 부분을 수행 할 수있는 방법을 설명하려고합니다. 내가 알고있는 방법은 이것이다 :선언되지 않은 함수를 객체로 사용하는 Javascript의 기능이 컴퓨터간에 작업을 나누는 데 어떻게 도움이됩니까?
function map(fn, a)
{
for (i = 0; i < a.length; i++)
{
a[i] = fn(a[i]);
}
}
map
가 빠르게 배열에
map(function(x){return x*2;}, a);
를 모든 요소에 함수를 호출 할 수 있으며 JS 당신이 그것을 선언하지 않고 함수를 호출 할 수있는 기능. 전제는 인터넷의 모든 데이터가 배열로 저장되어 있다면 (어떤 식 으로든 map
을 사용하면) 배열의 모든 항목에 대해 몇 가지 특정 변경 작업을 여러 CPU 또는 모든 컴퓨터간에 분할 할 수 있다는 것입니다.
이것은 이해할 수없는 부분입니다. 왜 이것을 수행하려면 map
또는 JS의 배열 조작이 필요합니까? 모든 컴퓨터에 배열의 한 섹션을 보내고 어레이의 모든 요소에서 실행되는 함수를 보내고 배열 을없이 실행해야하거나 이상한 함수 사용을 필요로하지 않고 변환 할 수 있습니까?
물론 개체로 함수를 사용하는 것이 편리하지만,이 작업이 CPU간에 작업을 분할하는 작업에 필수적인 이유는 무엇입니까?
좀보고 할 수 있습니다 더 일류 함수는 병렬 컴퓨팅을보다 쉽게 수행합니다. 물론, map과 reduce는 코드를 압축하는 방법으로 편리 할 것 같지만, 각 CPU에 필요한 액션으로'for' 루프를 그냥 똑바로 전달하는 것과 어떻게 다른가요? 두 경우 모두 결국 액션 자체에 대한 코드를 보내야합니다. 그러면 어떻게 도움이 될까요? 아니면 단순히 코드를 깨끗하게하는 것의 범위입니까? 아마도 나는지도 제작이 정확히 무엇인지 잘 이해하지 못하고 있다고 생각합니다. – DaemonOfTheWest
첫 번째 클래스 함수는'map' /'reduce'와 같은 프레임 워크/기능을 빌드하는 데 필요한 추상화를 제공합니다. 'map'의 구현을 덤프'for' 루프에서 병렬 처리되거나 분산되는 것으로 변경할 수 있지만'map'을 사용하는 코드는 전혀 변경하지 않아도됩니다. 네가 코드를 깨끗하게 유지하는 문제 (알고리즘 적 기능 대 평가 모델)의 분리이다. – Bergi
해명 해 주셔서 감사합니다. 그러나 이것이 Google의 mapreduce 사용과 어떤 관련이 있습니까? 아마도 저는지도 제작이 무엇인지 진정으로 이해하지 못하고 있지만 그러한 기능을 만들면 얻을 수있는 이익이 너무 많아서 검색을 간소화하는 데 사용 된 방법이 정확히 표시되지 않는 것 같습니다. – DaemonOfTheWest