А чёрт его знает. Скорее, негативный -- чаще используется знание об ограничениях переменных, благо эти ограничения очевидны.
А дистилляция (если я правильно помню, что это такое) здесь используется -- смело выполняется многократная прогонка правил по изменяющемуся коду, пока не останется ничего, что можно было бы оптимизировать. Зацикливаний здесь нет, потому что и код и правила достаточно простые.
А как ты собираешься дерево ветвлений балансировать? На 1к диапазонов у тебя сейчас будет минимум 1к сравнений против 11 необходимых. Сделай суперкомпиляцию двоичного поиска в сортированном массиве интов - и делов-то. Сортировка балансировку дерева сравнений обеспечит.
Для ip адресов, по-моему, выгодней построить и суперкомпилировать патрицию (которая binary radix tree), чем двоичный поиск. Но тут не суть важно, я просто серией этих постов пытаюсь продемонстрировать подход к программированию в стиле "скобки вокруг спецификации" :)
А сортировка и балансировка получившихся ветвлений у меня будет в следующем посте.
Comments 13
Reply
А дистилляция (если я правильно помню, что это такое) здесь используется -- смело выполняется многократная прогонка правил по изменяющемуся коду, пока не останется ничего, что можно было бы оптимизировать. Зацикливаний здесь нет, потому что и код и правила достаточно простые.
Reply
Reply
Reply
Reply
Reply
А сортировка и балансировка получившихся ветвлений у меня будет в следующем посте.
Reply
и в целом, сделать ничего лучше, чем построить дерево сравнений не выйдет таким образом.
и при десятках тысяч диапазонов оптимизатор, наверное, загнется.
Reply
Reply
Reply
Reply
Leave a comment