Empirical Measurements and Observations
Both lipta and ipta were executed on SPEC CPU2006 Integer Benchmarks, as well as some programs from SPEC2000 benchmarks. The results of measurements are presented in Table 1. We compare three implementations: lipta, ipta, and GCC's points-to analysis (gpta). All the three methods use the same approach of handling arrays, heap locations, pointer arithmetic, function pointers, and field sensitivity.
|lipta = Lazy PTA, ipta = Simple PTA, gpta = GCC's PTA|
|Program||kLoC||Call Sites||Time in milliseconds||Points-to Pairs|
It is evident from the measurements that:
Lazy computation of points-to pairs reduces the number of points-to pairs drastically. Although we could observe this for programs smaller than 30kLoC, we have no reason to believe that the situation would be different for larger programs.
Lazy computation and sparse propagation of points-to pairs reduces the execution time too. It is evident from the table that lipta out-performs gpta for most programs smaller than 30kLoC. A method that restricts itself to this data can be expected to be fast.
A paper proposing lazy pointer analysis and surmising our empirical measurements can be downloaded from here.