Здравствуйте, VladD2, Вы писали:
VD>Чудес не бывает, чтобы получить выигрыш в 50 раз нужно исходно иметь огромные алгоритмические проблемы и искусственный интеллект который их исправит.
Да ладно. Никакого предела ускорению программ путём суперкомпиляции нету. Привожу простой пример: делаем разложение чисел на простые множители.
Обычный компилятор компиляет алгоритм, который получает O(exp(N)).
Суперкомпилятор запускает этот алгоритм на первом миллионе чисел и строит таблицу.
В итоге, для чисел в пределах первого миллиона результат суперкомпилированной программы работает за O(1). Поделив время работы первого варианта для достаточно большого числа K на это O(1), можно получить ускорение и в миллион раз. Никаких фундаментальных проблем нет.
Нужно просто понимать, что речь идет о
частичных вычислениях. А они применимы далеко не всегда — если нужно раскладывать числа за пределами первого миллиона, вторая программа будет ничуть не лучше первой.
Так что всё, что может сделать суперкомпилятор — это
а) устранить
заведомо избыточную обобщённость (типична для суперумных библиотек на все случаи жизни, которые реально в конкретной программе используются в небольшом количестве сценариев)
б) провести
спекулятивное устранение обобщённости (с этим сложнее, потому что нужно знать распределение значений входных параметров. И если в нём нет особенных неравномерностей, то ничего интересного суперкомпилятор не даст)
В принципе, на
локальном уровне этим уже занимаются современные компиляторы, особенно для неуправляемых языков. Суперкомпиляторы претендуют на глобальный уровень, только и всего.
... << RSDN@Home 1.2.0 alpha rev. 677>>