ОПТИМИЗАТОР ЗАПРОСА ДЛЯ ИСПОЛЬЗОВАНИЯ CPU И РЕФАКТОРИНГА КОДА

1. Способ в вычислительном устройстве, которое включает в себя по меньшей мере один процессор, причем способ содержит этапы, на которых:
обнаруживают множество запросов в программном коде;
увеличивают ленивость, с которой эти запросы оцениваются в программном коде; и
применяют набор правил, который включает в себя множество правил, к обнаруженным запросам для генерирования функционально эквивалентного набора запросов, который оценивается более эффективно по отношению к обнаруженным запросам.
2. Способ по п. 1, в котором упомянутое обнаружение содержит этап, на котором обнаруживают запросы в программном коде в редакторе кода, при этом способ дополнительно содержит этап, на котором представляют для редактора кода опцию автоматически рефакторизовать программный код для замены множества запросов функционально эквивалентным набором запросов.
3. Способ по п. 1, в котором упомянутое обнаружение содержит этап, на котором обнаруживают запросы в программном коде во время компиляции, при этом способ дополнительно содержит этап, на котором генерируют компилированный код в компиляторе на основе версии программного кода, где множество запросов заменено функционально эквивалентным набором запросов.
4. Способ по п. 1, в котором упомянутое увеличение ленивости, с которой запросы оцениваются в программном коде, содержит этапы, на которых:
обнаруживают один или более запросов, оценивание которых допускает продление; и
формируют выражение единого запроса, которое включает в себя эти один или более запросов с продлеваемым оцениванием.
5. Способ по п. 1, в котором упомянутое применение набора правил содержит этапы, на которых:
определяют общий логический контекст между несколькими компонентами запроса; и
применяют правило из набора правил, соответствующее этому общему логическому контексту, к упомянутым нескольким компонентам запроса.
6. Способ по п. 1, в котором сгенерированный функционально эквивалентный набор запросов оценивается более эффективно по отношению к множеству запросов посредством по меньшей мере одного из генерирования результатов запроса, потребляющих меньше пространства памяти, чем результаты запроса множества запросов, расходования меньшего времени на исполнение, чем множество запросов, потребления меньшей пропускной способности сети, чем множество запросов, и потребления меньшей мощности обработки, чем множество запросов.
7. Способ по п. 1, в котором упомянутое применение набора правил содержит этапы, на которых:
оценивают применение множества комбинаций правил из набора правил к компонентам запроса, чтобы сгенерировать множество потенциально подходящих функционально эквивалентных наборов запросов; и
выбирают из этого множества потенциально подходящих функционально эквивалентных наборов запросов потенциально подходящий функционально эквивалентный набор запросов, имеющий наивысший выигрыш эффективности, в качестве упомянутого сгенерированного функционально эквивалентного набора запросов.
8. Способ по п. 1, в котором упомянутое применение набора правил содержит этапы, на которых:
оценивают во время выполнения применение множества комбинаций правил из набора правил к компонентам запроса, чтобы сгенерировать множество потенциально подходящих функционально эквивалентных наборов запросов; и
выбирают во время выполнения из этого множества потенциально подходящих функционально эквивалентных наборов запросов потенциально подходящий функционально эквивалентный набор запросов, имеющий наивысший выигрыш эффективности, в качестве упомянутого сгенерированного функционально эквивалентного набора запросов.
9. Способ по п. 8, в котором выигрыш эффективности, обеспечиваемый одним или более из потенциально подходящих функционально эквивалентных наборов запросов, по меньшей мере, отчасти зависит от условий исполнения во время выполнения.
10. Способ по п. 1, дополнительно содержащий этап, на котором используют машинное обучение для генерирования по меньшей мере одного правила для добавления в набор правил.
11. Вычислительное устройство, содержащее:
по меньшей мере одну схему процессора и
по меньшей мере одну память, которая хранит программный код, сконфигурированный для исполнения по меньшей мере одной схемой процессора, причем программный код сконфигурирован выполнять операции, содержащие:
обнаружение множества запросов в программном коде;
увеличение ленивости, с которой запросы оцениваются в программном коде; и
применение набора правил, который включает в себя множество правил, к обнаруженным запросам для генерирования функционально эквивалентного набора запросов, который оценивается более эффективно по отношению к обнаруженным запросам.
12. Вычислительное устройство по п. 11, в котором упомянутое обнаружение содержит обнаружение запросов в программном коде в редакторе кода, при этом операции дополнительно содержат представление для редактора кода опции автоматически рефакторизовать программный код для замены множества запросов функционально эквивалентным набором запросов.
13. Вычислительное устройство по п. 11, в котором упомянутое обнаружение содержит обнаружение запросов в программном коде во время компиляции, при этом операции дополнительно содержат генерирование компилированного кода в компиляторе на основе версии программного кода, где множество запросов заменено функционально эквивалентным набором запросов.
14. Вычислительное устройство по п. 11, в котором упомянутое увеличение ленивости, с которым запросы оцениваются в программном коде, содержит:
обнаружение одного или более запросов, оценивание которых допускает продление; и
формирование выражения единого запроса, которое включает в себя эти один или более запросов с продлеваемым оцениванием.
15. Компьютерный программный продукт, содержащий машиночитаемый носитель, на котором записана логика компьютерных программ, содержащая логические средства компьютерных программ для обеспечения процессору возможности выполнять любой из пп. 1-10.