Re: SISC on Android and the Heap
"Scott G. Miller" <[email protected]> Thu, 4 Mar 2010 05:07:08 -0600
| Newsgroups | gmane.comp.java.sisc.user |
|---|---|
| Message-ID | <[email protected]> |
--===============5952966633297062809== Content-Type: multipart/alternative; boundary=001485eba7c29789680480f79947 --001485eba7c29789680480f79947 Content-Type: text/plain; charset=ISO-8859-1 Yes, you have to rebuild the heap file after that. Scott On Wed, Mar 3, 2010 at 8:25 PM, Chad Albers <[email protected]> wrote: > Hi Scott, > > Thanks for the advice. The heap I'm using is from the latest cvs, and it > was built using the ant task. If I'm going to change that code as described > below, I should probably recreate the heap, right? > > I made those changes, and now I get a message saying there is an error > loading heap. > > Chad > > > -- > Chad Albers > http://www.neomantic.com > (pgp signature available on request) > > > On Wed, Mar 3, 2010 at 9:12 AM, Scott G. Miller <[email protected]>wrote: > >> The BerEncoding classes were actually what I suspected might be the >> problem. They're fairly cheap on desktop processors, which can do multiple >> arithmetic operations per clock cycle, but may be worse on embedded >> processors which can't. >> >> You might try changing the implementation of readInt in DeserializerImpl >> to just datin.readInt(), and writeInt in SerializerImpl to >> datin.writeInt(). This would use a bit more space in the heap but save >> cycles. >> >> Are you building the heap with "ant heap" in the source distribution? >> >> Scott >> >> >> On Tue, Mar 2, 2010 at 8:26 PM, Chad Albers <[email protected]>wrote: >> >>> Hi Scott, >>> >>> I did try to create the heap manually by following what happens in >>> GenerateHeap.java, just in case building it was quicker than deserializing >>> it. The build failed. >>> >>> I took your advice about the profiler. Android, indeed, has one called >>> traceview ( >>> http://developer.android.com/guide/developing/tools/traceview.html). I >>> don't' have much experience with profilers, so the information is murky to >>> me. I set up a trace around line 173 in AppContext.java where >>> r.eval("(initalize)"); is called. Here's as screen shot: >>> http://neomantic.com/images/traceview.png >>> >>> I sorted by 'Exclusive' time, the time inside a method, java.io.DataInput >>> comes in on top, but it really has to do with >>> sisc/ser/BerEncoding.readBerLong, the 2nd one, one of those sisc.ser.* >>> classes. But I may be reading this wrong. >>> >>> Do these results tell you anything? Got any advice on what I should be >>> looking for? >>> >>> Thanks for your help, >>> >>> Chad >>> >>> >>> -- >>> Chad Albers >>> http://www.neomantic.com >>> (pgp signature available on request) >>> >>> >>> On Mon, Mar 1, 2010 at 11:25 AM, Scott G. Miller <[email protected]>wrote: >>> >>>> On Sun, Feb 28, 2010 at 6:22 PM, Chad Albers <[email protected]>wrote: >>>> >>>>> I've been plugging away on getting SISC to work on Android, and made >>>>> more progress. But I've hit a major obstacle: serialization and >>>>> deserialization is notoriously slow on Android. Really slow. Embedded >>>>> inside a Android App, SISC takes about 45 seconds to run a simple eval on >>>>> the emulator. Most of that time is spent on (initialize) - which performs a >>>>> lot of deserialization on the precompiled heap file. >>>>> >>>>> My question is can I operate SISC in some way without using the >>>>> precompiled heap, and instead loading in the code precompiled in the heap. >>>>> Scott Miller's 2002 paper seems to imply that this is possible, provided >>>>> you're willing to take a 10-15 sec performance hit (page 5). >>>>> >>>>> >>>> The alternative to the heap is to load all the startup code from >>>> scratch, which is way slower (by about an order of magnitude). It may be >>>> possible however to sacrifice some space (ie a bigger heap) and use a >>>> different encoding. Does the Android platform have a profiler? Seeing >>>> where the bulk of the time is spent during startup may help suggest a >>>> different heap storage strategy. >>>> >>>> >>>>> Even if I manage this task, my next question is how often does SISC use >>>>> serialization/deserialization during processing...(I suspect a great deal). >>>>> >>>>> >>>> Code is lazily loaded in using ser/deser during operation, yes, but the >>>> bulk of R5RS is available when you hit the prompt. >>>> >>>> Scott >>>> >>> >>> >> > --001485eba7c29789680480f79947 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Yes, you have to rebuild the heap file after that.<br><br>Scott<br><br><div= class=3D"gmail_quote">On Wed, Mar 3, 2010 at 8:25 PM, Chad Albers <span di= r=3D"ltr"><<a href=3D"mailto:[email protected]">[email protected]= m</a>></span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, = 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Scott,<div><br= ></div><div>Thanks for the advice. =A0The heap I'm using is from the la= test cvs, and it was built using the ant task. =A0If I'm going to chang= e that code as described below, I should probably recreate the heap, right?= </div> <div><br></div><div>I made =A0those changes, and now I get a message saying= there is an error loading heap. =A0</div><div><br></div><font color=3D"#88= 8888"><div>Chad</div><div><br></div><div><br></div></font><div><div class= =3D"im"> --<br>Chad Albers<br><a href=3D"http://www.neomantic.com" target=3D"_blank"= >http://www.neomantic.com</a><br> (pgp signature available on request)<br> <br><br></div><div><div></div><div class=3D"h5"><div class=3D"gmail_quote">= On Wed, Mar 3, 2010 at 9:12 AM, Scott G. Miller <span dir=3D"ltr"><<a hr= ef=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>&g= t;</span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, = 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> The BerEncoding classes were actually what I suspected might be the problem= .=A0 They're fairly cheap on desktop processors, which can do multiple = arithmetic operations per clock cycle, but may be worse on embedded process= ors which can't.=A0 <br> <br>You might try changing the implementation of readInt in DeserializerImp= l to just datin.readInt(), and writeInt in SerializerImpl to datin.writeInt= ().=A0 This would use a bit more space in the heap but save cycles.=A0 <br> <br>Are you building the heap with "ant heap" in the source distr= ibution?<br><font color=3D"#888888"><br>Scott</font><div><div></div><div><b= r><br><div class=3D"gmail_quote">On Tue, Mar 2, 2010 at 8:26 PM, Chad Alber= s <span dir=3D"ltr"><<a href=3D"mailto:[email protected]" target=3D"= _blank">[email protected]</a>></span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, = 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Scott,<div><br= ></div><div>I did try to create the heap manually by following what happens= in GenerateHeap.java, just in case building it was quicker than deserializ= ing it. =A0The build failed.</div> <div><br></div><div>I took your advice about the profiler. =A0Android, inde= ed, has one called traceview (<a href=3D"http://developer.android.com/guide= /developing/tools/traceview.html" target=3D"_blank">http://developer.androi= d.com/guide/developing/tools/traceview.html</a>). =A0I don't' have = much experience with profilers, so the information is murky to me. =A0 I se= t up a trace around line 173 in AppContext.java where r.eval("(initali= ze)"); is called. =A0Here's as screen shot:=A0<a href=3D"http://ne= omantic.com/images/traceview.png" target=3D"_blank">http://neomantic.com/im= ages/traceview.png</a></div> <div><br></div><div>I sorted by 'Exclusive' time, the time inside a= method, java.io.DataInput comes in on top, but it really has to do with si= sc/ser/BerEncoding.readBerLong, the 2nd one, one of those sisc.ser.* classe= s. =A0 =A0But I may be reading this wrong. =A0</div> <div><br></div><div>Do these results tell you anything? =A0Got any advice o= n what I should be looking for?</div><div><br></div><div>Thanks for your he= lp,</div><div><br></div><font color=3D"#888888"><div>Chad</div><div><br></d= iv> </font><div><div><br clear=3D"all"> --<br>Chad Albers<br><a href=3D"http://www.neomantic.com" target=3D"_blank"= >http://www.neomantic.com</a><br>(pgp signature available on request)<br> <br><br></div><div><div></div><div><div class=3D"gmail_quote">On Mon, Mar 1= , 2010 at 11:25 AM, Scott G. Miller <span dir=3D"ltr"><<a href=3D"mailto= :[email protected]" target=3D"_blank">[email protected]</a>></span> wr= ote:<br> <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, = 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div>On Sun, Feb 28, 2010 at 6:22 PM, Chad Albers <span dir=3D"ltr"><<a = href=3D"mailto:[email protected]" target=3D"_blank">[email protected]= om</a>></span> wrote:<br></div><div class=3D"gmail_quote"><div> <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, = 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> I've been plugging away on getting SISC to work on Android, and made mo= re progress. =A0But I've hit a major obstacle: serialization and deseri= alization is notoriously slow on Android. =A0Really slow. =A0Embedded insid= e a Android App, SISC takes about 45 seconds to run a simple eval on the em= ulator. =A0Most of that time is spent on (initialize) - which performs a lo= t of deserialization on the precompiled heap file.=A0<div> <br></div><div>My question is can I operate SISC in some way without using = the precompiled heap, and instead loading in the code precompiled in the he= ap. =A0Scott Miller's 2002 paper seems to imply that this is possible, = provided you're willing to take a 10-15 sec performance hit (page 5).</= div> <div><br></div></blockquote></div><div><br>The alternative to the heap is t= o load all the startup code from scratch, which is way slower (by about an = order of magnitude).=A0=A0 It may be possible however to sacrifice some spa= ce (ie a bigger heap) and use a different encoding.=A0 Does the Android pla= tform have a profiler?=A0 Seeing where the bulk of the time is spent during= startup may help suggest a different heap storage strategy.<br> =A0<br></div><div><blockquote class=3D"gmail_quote" style=3D"border-left: 1= px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"= ><div></div><div><div><div>Even if I manage this task, my next question is = how often does SISC use serialization/deserialization during processing...(= I suspect a great deal).</div> <div><br></div></div></div></blockquote></div><div><br>Code is lazily loade= d in using ser/deser during operation, yes, but the bulk of R5RS is availab= le when you hit the prompt. =A0 <br><br>Scott<br></div></div> </blockquote></div><br></div></div></div> </blockquote></div><br> </div></div></blockquote></div><br></div></div></div> </blockquote></div><br> --001485eba7c29789680480f79947-- --===============5952966633297062809== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev --===============5952966633297062809== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Sisc-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/sisc-users --===============5952966633297062809==--