From: Alan Teoh <alan.teoh07_at_imperial.ac.uk>

Date: Sun, 16 Mar 2008 21:30:34 +0000

Date: Sun, 16 Mar 2008 21:30:34 +0000

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.
*

*>> >>
*

*>> >>
*

*>> >>
*

*>> >>
*

*>> >>
*

*>> >>
*

*>> >
*

*>> >
*

*>> >
*

*>>
*

*>>
*

*>>
*

*>>
*

*>
*

*>
*

*>
*

Received on Sun Mar 16 2008 - 21:30:43 GMT

*
This archive was generated by hypermail 2.2.0
: Sun Mar 16 2008 - 21:40:11 GMT
*