Re: [abc-users] Relational aspects running time

From: Eric Bodden <eric.bodden_at_mail.mcgill.ca>
Date: Sun, 16 Mar 2008 17:37:35 -0400

Might be a bug. How much heap space do you give it?

Eric

On 16/03/2008, Alan Teoh <alan.teoh07_at_imperial.ac.uk> wrote:
> It must have been somewhere in the code itself, but I am not able to
> figure what it was.
> Here was the output:
> 0
> 2
> 4
> 6
> 8
> 10
> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
> at java.util.HashMap.<init>(Unknown Source)
> at java.util.LinkedHashMap.<init>(Unknown Source)
> at java.util.HashSet.<init>(Unknown Source)
> at java.util.LinkedHashSet.<init>(Unknown Source)
> at Disjunct$relaspecttm$3.<init>(Jasmin)
> at Disjunct$relaspecttm$3.addNegativeBindingForVariableb1(Jasmin)
> at
> Disjunct$relaspecttm$3.addNegativeBindingsForSymbolassociate(Jasmin)
> at
> Constraint$relaspecttm$3.doNegativeBindingsForSymbolassociate(Jasmin)
> at Event$relaspecttm$3.doNegativeUpdates(Jasmin)
> at Equality.beforeafter$17(Equality.aj)
> at Test.main(Test.java:11)
>
> (Sorry I meant i=12 not i=8, but still)
>
> Compiled using the abc binary via the SVN link you gave me:
>
> http://abc.comlab.ox.ac.uk/products/trunk/abc-with-tests/
>
> abc -ext abc.ra Bit.java Equality.aj Test.java
>
> I will try the benchmark on the website out.
>
> Thanks anyway.
>
>
> Eric Bodden wrote:
> > You run out of memory at i=8? That makes no sense to me. I have no idea...
> >
> > If I find the time I will look into it next week.
> >
> > Strangely, we did similar benchmarks for our paper (available on our
> > website) and found no such odd behavior.
> >
> > Eric
> >
> > On 16/03/2008, Alan Teoh <alan.teoh07_at_imperial.ac.uk> wrote:
> >
> >> Hi Eric,
> >> Perhaps my previous benchmark was a bit too small to be an indicator of
> >> anything.
> >>
> >> The following was the full code that I used. The relational aspect and
> >> the Bit remain the same.
> >>
> >>
> >> class Test {
> >> public static void main(String[] args) {
> >> Bit[] bits = new Bit[10000];
> >> Bit b1 = new Bit();
> >> Bit b2 = new Bit();
> >>
> >> for(int i = 0; i < 10000; i++) {
> >> bits[i] = new Bit();
> >> }
> >> // Test memory consumption
> >> for(int i = 0; i < 5000; i+=2) {
> >> Equality.associate(bits[i], bits[i+1]); // Problem seems to
> >> start here
> >> System.out.println(i);
> >> }
> >>
> >> Equality.associate(b1, b2);
> >> // Test running time
> >> long time;
> >> for(int i = 0; i < 10; i++) {
> >> time = System.currentTimeMillis();
> >>
> >> for(int j = 0; j < 1000000; j++) {
> >> b1.set();
> >> b1.clear();
> >> }
> >>
> >> System.out.println("Operation took " +
> >> (System.currentTimeMillis() - time) + " milliseconds");
> >> }
> >> }
> >> }
> >>
> >> I ran the same code with association aspects (using the aspect provided
> >> by the paper by Sakurai et al.), and the benchmark was over in a few
> >> seconds. However, with relational aspects, the computation seems to take
> >> some time in the loop (for(int i = 0; i < 5000; i+=2) ). In fact,
> >> memory(Java heap space) runs out when i = 8. And as in the previous
> >> email, when I commented the relational advices off, the code will run
> >> and finish quickly without such problems. Obviously, by doing
> >> that(commenting the relational advices) I would have defeated the point
> >> of relational aspects, so that was the reason why I was wondering what
> >> could be wrong with it?
> >>
> >> Thanks again.
> >>
> >>
> >> Eric Bodden wrote:
> >> > Hi, Alan.
> >> >
> >> > Your benchmark is way too small to conclude anything at all about running time.
> >> >
> >> > In general, as we write in the paper, relational aspects *are* slower
> >> > than the implementation by Sakurai et al.. However, there should be no
> >> > exponential increase.
> >> >
> >> > Eric
> >> >
> >> >
> >> >
> >> > On 16/03/2008, Alan Teoh <alan.teoh07_at_imperial.ac.uk> wrote:
> >> >
> >> >> Hello,
> >> >>
> >> >> I have been playing around with relational aspects, and I stumbled upon
> >> >> a problem with its running time. Code is as follows (using Sakurai et
> >> >> al's Bit idea from association aspects, as well as the relational aspect
> >> >> from the relational aspects paper):
> >> >>
> >> >> class Bit {
> >> >> boolean value = false;
> >> >> public void set() { value = true; }
> >> >> public void clear() { value = false; }
> >> >> boolean get() { return value; }
> >> >> }
> >> >>
> >> >> Relational aspect is as follows:
> >> >>
> >> >> relational aspect Equality(Bit b1, Bit b2) {
> >> >> relational after(): call(public void Bit.set()) && target(b1) {
> >> >> b2.set();
> >> >> }
> >> >> relational after(): call(public void Bit.clear()) && target(b1) {
> >> >> b2.clear();
> >> >> }
> >> >> }
> >> >>
> >> >> Using this Test file:
> >> >> class Test {
> >> >> public static void main(String[] args) {
> >> >> Bit[] Bits = new Bit[10000];
> >> >> Bit b1 = new Bit();
> >> >> Bit b2 = new Bit();
> >> >> Bit b3 = new Bit();
> >> >> Bit b4 = new Bit();
> >> >> Bit b5 = new Bit();
> >> >> Bit b6 = new Bit();
> >> >> Bit b7 = new Bit();
> >> >> Bit b8 = new Bit();
> >> >> Bit b9 = new Bit();
> >> >> Bit b10 = new Bit();
> >> >> Equality.associate(b1, b2);
> >> >> Equality.associate(b3, b4);
> >> >> Equality.associate(b5, b6);
> >> >> Equality.associate(b7, b8);
> >> >> Equality.associate(b9, b10);
> >> >> }
> >> >> }
> >> >>
> >> >> My problem is that whenever I try to associate more and more Bit
> >> >> objects, the running time just increases in an exponential manner. When
> >> >> I comment the relational advices out however, the running time is quick,
> >> >> thus the relational advices are causing the problem here. I realise that
> >> >> for every relational advice is made up by a tracematch. However, I do
> >> >> not see how it actually affects the running time in such a drastic
> >> >> manner, given that the only amount of objects(which are visible to me)
> >> >> that are involved here are only 10, and there are only 5 aspect
> >> >> instances. Explanation on this matter would be greatly appreciated.
> >> >>
> >> >> Many thanks.
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >
> >> >
> >> >
> >>
> >>
> >>
> >>
> >
> >
> >
>
>
>

-- 
Eric Bodden
Sable Research Group
McGill University, Montréal, Canada
Received on Sun Mar 16 2008 - 21:37:39 GMT

This archive was generated by hypermail 2.2.0 : Sun Mar 16 2008 - 22:00:10 GMT