Неизменяемые графы в компиляторах.
От: thesz Россия http://thesz.livejournal.com
Дата: 20.02.09 21:26
Оценка: 46 (2)
Ещё не все с этим знакомы, а надо бы, "Чтобы все".

An Applicative Control-Flow Graph Based on Huet’s Zipper.


To support
optimizations in classic imperative style, we built a control-flow graph using mutable
pointers and other mutable state in the nodes. This decision proved unfortunate:
the mutable flow graph was big and complex, and it led to many bugs. We have
replaced it by a smaller, simpler, applicative flow graph based on Huet’s (1997)
zipper. The new flow graph is a success; this paper presents its design and shows
how it leads to a gratifyingly simple implementation of the dataflow framework
developed by Lerner, Grove, and Chambers (2002)...

The measurements in Table 1 reflect costs with optimization turned off.
With optimization turned on, it is hard to make an apples-to-apples comparison:
the old optimizer uses a dataflow framework that does not compose
analyses and transformations; some of the older optimizations are more conservative
than the newer ones; and some of the older optimizations run once
instead of being iterated to a fixed point. Still, when we compensate for these
differences as best we can, the results are similar: the applicative flow graph
performs about 10% better than its imperative counterpart...

Sapienti sat?
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Подождите ...
Пока на собственное сообщение не было ответов, его можно удалить.