Треки
/
Go
Go
/
Вправи
/
Паралельний підрахунок частоти літер
Паралельний підрахунок частоти літер

Паралельний підрахунок частоти літер

Середня

Вказівки

Порахуйте частоту літер у текстах за допомогою паралельних обчислень.

Паралелізм полягає в тому, щоб виконувати паралельно те, що також можна виконати послідовно. Поширений приклад - підрахунок частоти літер. Застосуйте паралелізм, щоб обчислити загальну частоту кожної літери в масиві текстів.

Конкурентність проти паралелізму

Go підтримує конкурентність через «горутини», які запускаються ключовим словом go. Це простий, легкий й елегантний спосіб забезпечити конкурентність і одна з найбільших переваг мови.

Можна помітити: хоч ця вправа й називається Паралельна частота літер, термін «паралельний» у Go зустрічається не дуже часто. Gophers вважають за краще використовувати термін конкурентність, щоб описати керування кількома незалежними горутинами («процесами» або «потоками» в контексті інших мов). Хоча ці терміни часто вживають як взаємозамінні, Gophers люблять бути технічно точними й кажуть «конкурентний», коли йдеться про позірно одночасне виконання горутин.

Хоча ми можемо планувати, щоб наші програми виконувалися паралельно, і часом може здаватися, що вони справді виконуються паралельно, без точного знання контексту виконання нашого коду ми можемо гарантувати лише те, що процеси виконуватимуться конкурентно. Іншими словами, вони можуть виконуватися послідовно так швидко, що ми не встигаємо цього помітити, але не строго одночасно.

Щоб дізнатися більше, зазирнімо до допису в блозі Go: Concurrency is not parallelism.

Ресурси про конкурентність

Якщо конкурентність у Go для нас нова тема, ось кілька ресурсів, з яких можна почати. Радимо переглянути їх перед тим, як братися за цю вправу:

А для справді глибокого занурення можна взяти книжку Concurrency in Go від @kat-co.

Тестування

У цій вправі модульні тести не можуть визначити, чи наше конкурентне рішення добре. Натомість краще розвʼязати цю вправу локально і виконати бенчмарки за допомогою go test -bench .. Для доброго рішення конкурентна версія має показувати меншу кількість наносекунд на операцію (ns/op), ніж послідовна.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Go Exercism

Час розпочати Паралельний підрахунок частоти літер?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.

Глибоке занурення у Паралельний підрахунок частоти літер!

Ми дослідимо різницю між конкурентністю і паралелізмом, розглянувши різні підходи, які застосовують такі мови, як JavaScript, Go, Elixir і Rust.