разных модулей параллельно, собрав ТОЛЬКО всю нужную информацию, а потом бегать по этой информации в однопотоке, но по всему отображению программы?
То есть, у нас есть 2 абстрактных домена: один промежуточный, а второй - для анализа всей программы из промежуточного.
Если про thin lto, то там параллельно получение представления, потом узкая точка, когда мы собираем воедино, потом там функции распределялись по кластерам, и собирались параллельно. Но там именно lto, а не whole program. Но подход вполне себе применимый
Ну это стандартный map-reduce, он же fork-join, и т.д. Простые эффективные методы вычислительного программирования, применяющиеся с доисторических времён.
Оно всё, может, и выглядит просто, но сделать это не так просто)
Безусловно. Просто к OCaml'у это, кажется, неприменимо в текущем виде. Парсер очень быстр.
Обсуждают сегодня