Задача про ip-диапазоны: cуперкомпиляция условий

Nov 04, 2011 01:40

В продолжение предыдущего поста.

Давайте еще раз посмотрим на код условия, которое мы генерируем по описанию диапазона:

IP-RANGES> (ip-range "104.57.221.173,104.75.219.35")(AND ( Read more... )

article, code, supercompilation, ip range, common lisp, dsl, lisp, ip, code generation

Leave a comment

Comments 13

thesz November 3 2011, 21:55:03 UTC
А это какой суперкомпилятор? Позитивный или негативный? Думал ли ты над применением дистилляции?

Reply

swizard November 3 2011, 22:14:37 UTC
А чёрт его знает. Скорее, негативный -- чаще используется знание об ограничениях переменных, благо эти ограничения очевидны.

А дистилляция (если я правильно помню, что это такое) здесь используется -- смело выполняется многократная прогонка правил по изменяющемуся коду, пока не останется ничего, что можно было бы оптимизировать. Зацикливаний здесь нет, потому что и код и правила достаточно простые.

Reply


zlokk November 3 2011, 22:23:54 UTC
пособие по превращению более-менее читаемого кода в БЕЗУМNЕ ))

Reply

rigidus November 4 2011, 01:18:43 UTC
Наоборот ваще-то

Reply

nponeccop November 4 2011, 01:46:53 UTC
Я на заре своей карьеры делал обратную процедуру: из лапши ветвлений, составленной вручную, делал конфигурационный файлик и интерпретатор к нему.

Reply


nponeccop November 4 2011, 01:53:59 UTC
А как ты собираешься дерево ветвлений балансировать? На 1к диапазонов у тебя сейчас будет минимум 1к сравнений против 11 необходимых. Сделай суперкомпиляцию двоичного поиска в сортированном массиве интов - и делов-то. Сортировка балансировку дерева сравнений обеспечит.

Reply

swizard November 4 2011, 09:09:05 UTC
Для ip адресов, по-моему, выгодней построить и суперкомпилировать патрицию (которая binary radix tree), чем двоичный поиск. Но тут не суть важно, я просто серией этих постов пытаюсь продемонстрировать подход к программированию в стиле "скобки вокруг спецификации" :)

А сортировка и балансировка получившихся ветвлений у меня будет в следующем посте.

Reply


dmzlj November 4 2011, 13:01:24 UTC
а в чем прикол сравнивать побайтно? почему не по int32?
и в целом, сделать ничего лучше, чем построить дерево сравнений не выйдет таким образом.

и при десятках тысяч диапазонов оптимизатор, наверное, загнется.

Reply

cvet_divanoff November 4 2011, 19:05:36 UTC
Так идея решения вроде была в минимальной деформации/трансформации условий?

Reply

dmzlj November 4 2011, 19:44:06 UTC
Учитывая то, что будет происходить потом, по-моему уже копейки. Но если дело принципа, тогда конечно

Reply


p2004r November 12 2011, 19:32:31 UTC
... а когда продолжение? :)

Reply


Leave a comment

Up