Похоже, Частичная оценка применяется к Java.
Эта идея заключается в том, что если у вас есть общая функция F (A, B), имеющая два параметра A и B, и (только предположим), что каждый раз, когда она вызывается, A всегда одинакова. Затем вы можете преобразовать F (A, B) в новую функцию FA (B), которая принимает только один параметр B. Эта функция должна быть быстрее, потому что ей не нужно обрабатывать информацию в A - она уже «знает» ее. Он также может быть меньше по той же причине.
Это тесно связано с генерацией кода.
При генерации кода вы пишете генератор кода G, который принимает вход A, и пишете небольшую быструю специализированную функцию FA. G(A) -> FA
.
В специализации вам понадобятся три вещи: общая программа F, специализатор S и ввод A: S(F,A) -> FA
.
Я думаю, что это случай разделяй и властвуй.
При генерации кода вам нужно только написать G (A), что просто, потому что нужно учитывать только As, в то время как сгенерированная программа учитывает все B.
В Частичной оценке вы должны где-то получить S и написать F (A, B), что сложнее, поскольку необходимо учитывать перекрестное произведение всех возможных As и B.
В личном опыте, программа F (A, B) должна была быть написана, чтобы соединить изменения в реальном времени от более старой иерархической базы данных к более новой реляционной базе данных. A было мета-описанием того, как сопоставить старую базу данных новой, в форме другой базы данных. B - изменения, вносимые в исходную базу данных, а F (A, B) вычисляет соответствующие изменения в более новой базе данных. Поскольку А менялся с низкой частотой (еженедельно), F (A, B) записывать не нужно. Вместо этого был написан генератор G (A) (на C) для генерации FA (B) (на C). Экономия времени была примерно на порядок величины времени разработки и на два порядка времени выполнения.