Cтраница 1
Общие подвыражения должны быть идентичными и должны располагаться в одном и том же операторе. Например, в приведенной ниже программе мы не можем исключить одинаковые элементы матрицы, соответствующие подвыражению START - FINISH, поскольку значение START изменяется между вычислениями двух выражений. [1]
Определение общих подвыражений в алгебраических выражениях может привести к сокращению объема вычислений, поскольку некоторые операции могут быть вынесены за скобки. Редукция к UJNF позволяет более просто определять общие подвыражения: U - и J-уравнения можно рассматривать отдельно. [2]
Поиск общих подвыражений для л ( 2) J-уравнений является вычислительно сложным, и применение различных вариантов таких построений не обязательно приводит к одному и тому же результату. [3]
![]() |
Матричное представление синтаксического дерева из. [4] |
Повторные вхождения общих подвыражений в один и тот же арифметический оператор исключаются из матрицы. Их значение вычисляется только один раз при первом появлении. [5]
КТО-ТО является общим подвыражением, на которое ссылаются указатели из поля CAR из первой и из третьей ячейки списка. [6]
Какая фаза исключает общие подвыражения. [7]
Используя метод, аналогичный методу исключения общих подвыражений, можно исключить инвариантное вычисление из начальной позиции в матрице и поместить его в соответствующее место. [8]
Представлять матрицу в такой форме, чтобы общие подвыражения могли быть обнаружены. [9]
Во втором проходе определяются точки вычисления выражений, устраняются общие подвыражения, из циклов выносятся инвариантные операторы2 и производится распределение индексных регистров для вычислений значений переменных. [10]
Если then - и e / se - части содержат общие подвыражения, то их достаточно вычислить один раз, до реализации разветвления ( следует помнить, что значение такого подвыражения, вычисленное в одной из этих частей, нельзя использовать в другой части, поскольку всегда выполняется только одна из них. [11]
![]() |
Матричное представление синтаксического дерева из. [12] |
Такая оптимизация часто подвергается критике на том основании, что нахождение общих подвыражений или переупорядочение операторов более эффективным способом должны выполняться программистами и не входят в круг задач разработчиков компиляторов. [13]
Многие компиляторы не ограничиваются такого сорта простой оптимизацией и анализируют программу ради других возможных усовершенствований, как то: однократное вычисление общих подвыражений, вынесение инвариантных операций за пределы цикла, оптимизация использования регистров, оптимизация вычисления формул обращения к массивам. [14]
В некоторых языках, подобных ПЛ / 1, где прерывания могут изменять значения переменных в любой момент времени, исключение общих подвыражений может быть сделано только в том случае, если программист укажет, что никакие его собственные программы обработки прерываний не изменяют значений переменных в программе. Это может привести к тому, что наши два подвыражения уже, будут неэквивалентными, даже если они находятся в одном и том же операторе. [15]