Эффективный способ получить CIO-1? - PullRequest
0 голосов
/ 17 января 2019

Мне было поручено задание, где я получаю группу сотрудников, и мне нужно получить их CIO-1 (имеется в виду босс босса их босса ... вплоть до босса, менеджером которого является CIO). Но я не знаю, эффективно ли я это делаю. Это мой алгоритм:

Для каждого данного сотрудника выполните запрос API к графику Microsoft, чтобы получить его менеджера. Затем выполните другой запрос API, чтобы получить менеджера этого менеджера ... и делайте это, пока я не получу того, чей менеджер является нашим ИТ-директором. Это означает, что если бы мне дали 500 сотрудников, я выполнял бы HTTP-запрос внутри цикла for и выполнял бы другой цикл for внутри, чтобы перейти к «цепочке менеджеров».

Это нормально? Может ли Microsoft Graph остановить меня, потому что я буду выполнять много запросов за короткий промежуток времени?

1 Ответ

0 голосов
/ 18 января 2019

Это скорее вопрос алгоритма, чем вопрос графика. Но да, вам нужно запросить данные в конце дня. Однако есть более разумные способы, чем другие. Вместо того, чтобы строить цикл, который запрашивает всех боссов вашего начального сотрудника, и внутри него есть другой цикл, чтобы получить босса более высокого уровня и так далее ... Вы могли бы сделать это по-другому.
Сначала убедитесь, что вы используете пакетных запросов , чтобы свести к минимуму количество обращений.
Во-вторых, я думаю, можно с уверенностью предположить, что в какой-то момент у некоторых сотрудников будет один и тот же начальник. И вместо того, чтобы многократно запрашивать, кто является боссом этого босса, вам нужно убедиться, что вы делаете это только один раз. Есть несколько способов сделать это, поддерживая дерево, индекс, всегда применяя различные наборы данных ...
Наконец, имейте в виду, что алгоритмическая сложность цикла в цикле равна o (n) ^ 2. Что всегда хуже, чем наличие двух последовательных циклов (один за другим). Так что попытка сгладить ваш алгоритм поможет, а также поможет вам создавать пакеты.

Что касается дросселирования, убедитесь, что вы идете по руководству . Да, вы можете испытать это, однако есть несколько способов оптимизации.

...