Подтема 4 из 6
Параллельность
Сетка миллисекунд в Excel: сколько процессов идёт в каждую миллисекунду, наибольшее число и самый длинный отрезок.
Сетка миллисекунд
Как увидеть, сколько процессов идёт одновременно в каждую миллисекунду?
Расписание рисуют сеткой: строка — процесс, столбец — миллисекунда, закрашены миллисекунды, когда процесс идёт. Сумма столбца — сколько процессов идёт в эту миллисекунду. Так выглядит расписание учебного примера:
Такую сетку называют диаграммой Ганта. На бумаге её рисуют для маленьких таблиц, а в Excel её строят формулами — тогда она работает и для двадцати процессов.
Сетка в Excel
Как построить такую сетку в Excel?
В первой строке — номера миллисекунд, в каждой клетке — 1, если процесс идёт в эту миллисекунду, и 0, если нет. Начала — в B, окончания — в C, миллисекунды 1, 2, … — в E1, F1 и дальше вправо:
=ЕСЛИ(И(E$1>$B2; E$1<=$C2); 1; 0)=СУММ(E2:E9)Условие то же, что в прошлой подтеме: номер миллисекунды больше начала и не больше окончания. Знаки расставлены так, чтобы формулу можно было протянуть на всю сетку: E$1 — всегда номер из первой строки, $B2 и $C2 — всегда начало и окончание из своей строки. В десятой строке — суммы столбцов:
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | Начало | Окончание | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
| 2 | 1 | 0 | 4 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 3 | 2 | 0 | 6 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 4 | 3 | 4 | 7 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 5 | 4 | 6 | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 6 | 5 | 6 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | |
| 7 | 6 | 8 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | |
| 8 | 7 | 11 | 13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | |
| 9 | 8 | 13 | 14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
| 10 | Всего | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | |||
| 11 | Подряд | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 1 | 2 | 3 | 4 | 5 | 0 | 0 | |||
| 12 | ||||||||||||||||||
| 13 | k | 2 | ||||||||||||||||
| 14 | Отрезок | 6 | ||||||||||||||||
| 15 | Пик | 3 |
E2скопирована до R9=ЕСЛИ(И(E$1>$B2;E$1<=$C2); 1; 0) E10скопирована до R10=СУММ(E2:E9)E11=ЕСЛИ(E10=$C$13;1; 0) F11скопирована до R11=ЕСЛИ(F10=$C$13;E11+1; 0) C14=МАКС(E11:R11)C15=МАКС(E10:R10)
Выбери K5 — клетку процесса 4 на 7-й мс: рамки стоят на номере 7 в K1 и на начале и окончании процесса, 6 и 8. В K10 — 3: на 7-й мс идут три процесса.
Больше всего одновременно
Какое наибольшее число процессов шло одновременно?
Наибольшее значение в строке сумм: =МАКС(E10:R10). В примере это 3, на 7-й мс. На листе выше ответ — в C15.
Часто вместе с этим спрашивают, сколько времени шло столько процессов — в сумме или подряд. В сумме — это =СЧЁТЕСЛИ(E10:R10;: число миллисекунд, где сумма равна 3. Подряд — следующий раздел.
Самый длинный отрезок
Как долго подряд шли ровно два процесса?
Добавим строку-счётчик: если в миллисекунду идёт нужное число процессов, счётчик растёт на 1, если нет — сбрасывается в 0. Наибольшее значение счётчика — длина самого длинного отрезка. Нужное число — в C13, счётчик — в 11-й строке:
=ЕСЛИ(E10=$C$13; 1; 0)=ЕСЛИ(F10=$C$13; E11+1; 0)=МАКС(E11:R11)E11 — первая миллисекунда, у неё нет соседа слева. F11 смотрит на счётчик слева и протягивается вправо до R11. В примере два процесса шли подряд с 1-й по 6-ю мс — ответ 6. Поменяй C13 на 3 на листе выше — получится 1.
Если спрашивают «не меньше двух», в условии счётчика ставят E10>=$C$13: тогда подходит и 7-я мс с её тремя процессами, и отрезок растёт до 12 мс.
Итого
- Сеткастрока — процесс, столбец — миллисекунда
- Клетка
=ЕСЛИ(И(E$1>$B2;E$1<=$C2); 1; 0) - Сумма столбцасколько процессов идёт в эту миллисекунду
- Больше всего
=МАКС(E10:R10) - В сумме
=СЧЁТЕСЛИ(E10:R10;k) - Подрядсчётчик: растёт на 1 или сбрасывается в 0
Проверьте себя
Ответь сначала сам, потом открой ответ.
E5 стоит =ЕСЛИ(И(E$1>$B5; E$1<=$C5); 1; 0). Что будет в F5 после протягивания вправо?ОтветСкрыть ответ
=ЕСЛИ(И(F$1>$B5; F$1<=$C5); 1; 0): меняется только номер миллисекунды.ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
Практика
Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.
Общий участок двух процессов
Один процесс идёт с момента 1 до момента 8, другой — с 5 до 10. Сколько миллисекунд они идут одновременно?
Введите число.
Подсказка
Вместе они идут с 6-й по 8-ю мс.
Решение
3 мс: с 6-й по 8-ю.
Ответ: 3
Процессы 3 и 4 вместе
Сколько миллисекунд одновременно идут процессы 3 и 4 учебного примера?
Введите число.
Подсказка
Процесс 3 идёт с 5-й по 7-ю мс, процесс 4 — с 7-й по 8-ю.
Решение
1 мс: 7-я.
Ответ: 1
Вместе с процессом 6
Какое наибольшее число других процессов шло одновременно с процессом 6 учебного примера?
Введите число.
Подсказка
Посмотри на столбцы с 9-й по 12-ю мс — когда идёт процесс 6.
Решение
1: на 9–11-й мс рядом идёт процесс 5, на 12-й — процесс 7.
Ответ: 1
Время, пик, отрезок, момент 7
Для учебного примера найди общее время, наибольшее число одновременно идущих процессов, самый длинный отрезок с таким числом процессов и число процессов, работающих в момент 7.
Введите четыре числа через пробел в порядке вопроса.
Подсказка
Построй строку сумм сетки; момент 7 — граница 7-й и 8-й мс.
Решение
Общее время 14, больше всего — 3 процесса, отрезок 1 мс, в момент 7 работают 2 процесса.
Ответ: 14 3 1 2
Сумма и самый длинный отрезок
Три процесса идут одновременно с 3-й по 6-ю мс и с 10-й по 12-ю мс. Сколько миллисекунд в сумме они идут вместе? Какова длина самого длинного отрезка?
Введите два числа через пробел в том порядке, в каком их спрашивают.
Подсказка
Сумма — все такие миллисекунды, отрезок — только подряд.
Решение
Суммарно 7 мс, самый длинный отрезок — 4 мс.
Ответ: 7 4
Не более одного процесса
Сколько миллисекунд подряд в учебном примере идёт не больше одного процесса, пока все процессы не закончились?
Введите число.
Подсказка
Посмотри на конец строки сумм.
Решение
2 мс: 13-я и 14-я.
Ответ: 2
Пик и его длительность
Процессы: 1 — 3 мс, 0; 2 — 8 мс, 0; 3 — 2 мс, 1; 4 — 5 мс, 1; 3; 5 — 4 мс, 2; 4; 6 — 6 мс, 3; 7 — 1 мс, 5; 6. Независимые процессы начинаются в момент 0, зависимые — сразу после завершения всех процессов, от которых зависят. Определите наибольшее количество процессов, выполнявшихся одновременно, и длительность (в мс) самого длинного отрезка, на котором выполнялось столько процессов.
Введите два числа через пробел в том порядке, в каком их спрашивают.
Подсказка
Сетка миллисекунд и строка сумм.
Решение
3 процесса, 3 мс: с 6-й по 8-ю мс идут процессы 2, 4 и 6.
Ответ: 3 3
Ровно два процесса
Процессы: 1 — 3 мс, 0; 2 — 8 мс, 0; 3 — 2 мс, 1; 4 — 5 мс, 1; 3; 5 — 4 мс, 2; 4; 6 — 6 мс, 3; 7 — 1 мс, 5; 6. Независимые процессы начинаются в момент 0, зависимые — сразу после завершения всех процессов, от которых зависят. Определите длину самого длинного отрезка (в мс), на котором выполняются ровно два процесса.
Введите число.
Подсказка
Счётчик подряд по строке сумм с условием «= 2».
Решение
5 мс: с 1-й по 5-ю.
Ответ: 5