Вам может пригодиться Короткое замыкание . По сути, вы можете сделать так, чтобы ваш длинный условный оператор быстрее распознавал ложные результаты, если ваш набор данных удобен для этого. Я не знаю, на что конкретно похожи даты, которые вы сравниваете, но рассмотрим следующий пример:
Дата 1: 1 января 2019
Дата 2: 2 января 2019
Ваше условное утверждение проходит 3 сравнения, прежде чем окончательно определить, что две даты не равны.
2019 == 2019
Январь == Январь
1! = 2
Если вы измените свое условие на:
A.index.day[i] == B.index.day[j] and A.index.month[i] == B.index.month[j] and A.index.year[i] == B.index.year[j]
Ваша программа сначала сравнивает два дня и определяет, что они не равны. А поскольку ваше условие состоит из логических операций AND, логика короткого замыкания делает вывод, что общее условие должно быть ложным.
Таким образом, нужно сделать только одно сравнение вместо трех. Однако получение какого-либо заметного улучшения от этого подхода зависит от того, как выглядят ваши даты. Если все ваши даты совпадают, или один и тот же год, упомянутый мною подход, безусловно, может повысить вашу производительность. Но если ваш набор содержит большое количество месяцев, дней и лет, вы вряд ли заметите это изменение.
По сути, подумайте, какое из ваших условий наиболее вероятно для возвращения Ложно в среднем случае. Сначала оцените это условие в вашем условном утверждении.
Надеюсь, это поможет!