hello everyone, finally it turned out to be very easy to profile my gwt application honeycrm using the amazing jprofiler. i created a 3 minute screencast showing how it works http://www.youtube.com/watch?v=zUJUSxXOOa4
sorry for the delay when my app runs locally being profiled :) i hope this screencast helps everyone who wants to increase his apps performance. kind regards, ingo 2010/8/17 ingo <[email protected]>: > Hi Don, > > thank you so much for the input. It helped me alot to understand what > appstats is for. > > Can anyone tell me how to setup DevAppServer for profiling with an > external profiling tool? Normally i just run it from eclipse. > > I forgot to mention that my server code heavily relies on reflection > i.e. on every CRUD operation data is copied from a generic dto class > into the domain class object (or the other way around). I want to find > out how much load is generated where by all this reflection to > optimize my apps performance (e.g. DtoCopyMachine code see > http://code.google.com/p/honeycrm/source/browse/branches/honeycrm_r134_gwt2.1m2/src/honeycrm/server/transfer/DtoCopyMachine.java). > > Kind Regards, > Ingo > > On 16 Aug., 17:28, Don Schwarz <[email protected]> wrote: >> Hi Ingo, >> >> If you're making any API calls at all, there's a good chance that the >> performance of your application depends significantly on the performance of >> those API calls. The goal of Appstats is to give you transparency into how >> many API calls you are making, and how much time you are spending in those >> API calls. While you cannot necessarily optimize the API calls themselves, >> there are important things that you can change in your application code >> which will influence the number and speed of API calls: >> - use bulk versions of API calls (e.g. datastore.get() to retrieve multiple >> entities in a single call) >> - store commonly-accessed datastore entities in memcache >> - use keys-only datastore queries when relevant >> >> If you are using JDO/JPA to access the datastore then some of this is >> obscured from you, but it is still a good idea to know what API calls are >> being made under the covers. This may influence how you construct your data >> model. >> >> Now it's very possible that you aren't making any API calls at all, or that >> most of your time is consumed by expensive CPU-bound construction or >> calculations within your application code. In this case Appstats will not >> be very helpful to you. In this case I would suggest hooking up a >> traditional Java profiler to the DevAppServer. The performance of CPU-bound >> code on our servers should not be drastically different than under the >> DevAppServer. >> >> On Mon, Aug 16, 2010 at 9:54 AM, Ingo Jaeckel >> <[email protected]>wrote: >> >> > hello everyone, >> >> > okay if nobody knows an answer to this question i would like to know >> > what appstats is all about if you can only measure (?) the time for a >> > complete RPC request. since i as a developer cannot influence the >> > speed of API methods (e.g. CRUD operations in the bigtable datastore) >> > i am more interested in the performance of my own code. what is the >> > use of appstats if i cannot measure my apps performance (see previous >> > postings)? >> >> > kind regards, >> > ingo >> >> > 2010/8/13 Ingo Jaeckel <[email protected]>: >> > > hello everyone, >> >> > > i would like to make sure that i am reading the appstats output the >> > > right way. is it correct to read each trace from button to top? if >> > > that is true it seems like appstats only tells you >> >> > > 1. the entry point of the trace e.g. >> > > com.google.apphosting.runtime.JavaRuntime$RpcRunnable:418 run() at the >> > > bottom of the page/trace >> > > 2. the exit point of the trace e.g. >> > > com.google.apphosting.api.ApiProxy:98 makeSyncCall() at the top of >> > > the page/trace >> > > 3. the time spend from entering and leaving the trace i.e. the time >> > > between com.google.apphosting.runtime.JavaRuntime$RpcRunnable:418 >> > > run() and com.google.apphosting.api.ApiProxy:98 makeSyncCall() >> >> > > if this is still correct my question remains: is it also possible to >> > > measure the time of a fraction of the trace? thanks everyone in >> > > advance! >> >> > > kind regards, >> > > ingo >> >> > > 2010/8/12 Ingo Jaeckel <[email protected]>: >> > >> hello everyone, >> >> > >> i enabled appstats for my java application honeycrm. now i want to >> > >> know which parts of app take up most cpu time. at the moment i do not >> > >> care about the time spent in other packages. i would like to measure >> > >> the execution time of the methods in the package of my application: >> > >> honeycrm.server.* >> >> > >> when i open the appstats ui i see a lot of huge stacktraces. usually i >> > >> find my sourcecode executed somewhere in the middle of the trace (see >> > >> attached screenshot). but as i said i would like to know the time >> > >> spend in my methods. e.g. how much time of the selected 50ms slot has >> > >> been spend in >> > honeycrm.server.CommonServiceReader.resolveRelatedEntities()? >> > >> basically i want to identify the hotspots in my application that >> > >> require performance tuning. but with the appstats ui i do not know how >> > >> to get the necessary information for that. >> >> > >> can anyone tell me how to identify hotspots in my code using appstats? >> >> > >> i tried appwrench as well but could not get it going (eclipse helios, >> > >> gwt 2.1m2 on macosx snow leopard). did anyone has success with that? >> >> > >> kind regards, >> > >> ingo >> >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "Google App Engine for Java" group. >> > To post to this group, send email to >> > [email protected]. >> > To unsubscribe from this group, send email to >> > [email protected]<google-appengine-java%[email protected]> >> > . >> > For more options, visit this group at >> >http://groups.google.com/group/google-appengine-java?hl=en. >> >> > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
