К содержанию

Подтема 4 из 6

Параллельность

Сетка миллисекунд в Excel: сколько процессов идёт в каждую миллисекунду, наибольшее число и самый длинный отрезок.

Сетка миллисекунд

Как увидеть, сколько процессов идёт одновременно в каждую миллисекунду?

Расписание рисуют сеткой: строка — процесс, столбец — миллисекунда, закрашены миллисекунды, когда процесс идёт. Сумма столбца — сколько процессов идёт в эту миллисекунду. Так выглядит расписание учебного примера:

Под сеткой — сколько процессов идёт в каждую миллисекунду. Три одновременно — только на 7-й мс, по два — почти всё остальное время.

Такую сетку называют диаграммой Ганта. На бумаге её рисуют для маленьких таблиц, а в Excel её строят формулами — тогда она работает и для двадцати процессов.

Сетка в Excel

Как построить такую сетку в Excel?

В первой строке — номера миллисекунд, в каждой клетке — 1, если процесс идёт в эту миллисекунду, и 0, если нет. Начала — в B, окончания — в C, миллисекунды 1, 2, … — в E1, F1 и дальше вправо:

E2=ЕСЛИ(И(E$1>$B2;E$1<=$C2);1;0)
E10=СУММ(E2:E9)

Условие то же, что в прошлой подтеме: номер миллисекунды больше начала и не больше окончания. Знаки расставлены так, чтобы формулу можно было протянуть на всю сетку: E$1 — всегда номер из первой строки, $B2 и $C2 — всегда начало и окончание из своей строки. В десятой строке — суммы столбцов:

E2=ЕСЛИ(И(E$1>$B2;E$1<=$C2);1;0)
ABCDEFGHIJKLMNOPQR
1IDНачалоОкончание1234567891011121314
210411110000000000
320611111100000000
434700001110000000
546800000011000000
6561100000011111000
7681200000000111100
87111300000000000110
98131400000000000001
10Всего22222232222211
11Подряд12345601234500
12
13k2
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): число миллисекунд, где сумма равна 3. Подряд — следующий раздел.

Самый длинный отрезок

Как долго подряд шли ровно два процесса?

Добавим строку-счётчик: если в миллисекунду идёт нужное число процессов, счётчик растёт на 1, если нет — сбрасывается в 0. Наибольшее значение счётчика — длина самого длинного отрезка. Нужное число — в C13, счётчик — в 11-й строке:

E11=ЕСЛИ(E10=$C$13;1;0)
F11=ЕСЛИ(F10=$C$13;E11+1;0)
C14=МАКС(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

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
В E5 стоит =ЕСЛИ(И(E$1>$B5;E$1<=$C5);1;0). Что будет в F5 после протягивания вправо?
ОтветСкрыть ответ
Ответ
=ЕСЛИ(И(F$1>$B5;F$1<=$C5);1;0): меняется только номер миллисекунды.
Вопрос 2
Почему перед B и C стоит $, а перед номером строки — нет?
ОтветСкрыть ответ
Ответ
Начало и окончание всегда в столбцах B и C, а строка у каждого процесса своя — при протягивании вниз она должна меняться.
Вопрос 3
Строка сумм: 2 2 2 2 2 2 3 2 2 2 2 2 1 1. Какой самый длинный отрезок, где шли ровно два процесса?
ОтветСкрыть ответ
Ответ
6 мс: с 1-й по 6-ю. Следующий отрезок, с 8-й по 12-ю, — 5 мс.
Вопрос 4
Сколько миллисекунд в сумме шли ровно два процесса?
ОтветСкрыть ответ
Ответ
11: шесть с 1-й по 6-ю и пять с 8-й по 12-ю.
Вопрос 5
А какой самый длинный отрезок, где шло не меньше двух процессов?
ОтветСкрыть ответ
Ответ
12 мс: с 1-й по 12-ю, 7-я мс с тремя процессами тоже подходит.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Общий участок двух процессов

Один процесс идёт с момента 1 до момента 8, другой — с 5 до 10. Сколько миллисекунд они идут одновременно?

Введите число.

Процессы 3 и 4 вместе

Сколько миллисекунд одновременно идут процессы 3 и 4 учебного примера?

Введите число.

Вместе с процессом 6

Какое наибольшее число других процессов шло одновременно с процессом 6 учебного примера?

Введите число.

Время, пик, отрезок, момент 7

Для учебного примера найди общее время, наибольшее число одновременно идущих процессов, самый длинный отрезок с таким числом процессов и число процессов, работающих в момент 7.

Введите четыре числа через пробел в порядке вопроса.

Сумма и самый длинный отрезок

Три процесса идут одновременно с 3-й по 6-ю мс и с 10-й по 12-ю мс. Сколько миллисекунд в сумме они идут вместе? Какова длина самого длинного отрезка?

Введите два числа через пробел в том порядке, в каком их спрашивают.

Не более одного процесса

Сколько миллисекунд подряд в учебном примере идёт не больше одного процесса, пока все процессы не закончились?

Введите число.

Пик и его длительность

Процессы: 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, зависимые — сразу после завершения всех процессов, от которых зависят. Определите наибольшее количество процессов, выполнявшихся одновременно, и длительность (в мс) самого длинного отрезка, на котором выполнялось столько процессов.

Введите два числа через пробел в том порядке, в каком их спрашивают.

Ровно два процесса

Процессы: 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, зависимые — сразу после завершения всех процессов, от которых зависят. Определите длину самого длинного отрезка (в мс), на котором выполняются ровно два процесса.

Введите число.