apparently, the render method use string concat often cause the problem, it should have other method to process string concat method you can try simulate other languages StringBuilder, use a list append your string, and then use a join method get the string to output
On Fri, Jan 2, 2009 at 12:52 PM, mb <[email protected]> wrote: > > It looks like iterating over the db result object is what's causing > the slowdown. > > With a small result set (20 records), here are the times in 0.31 to do > the db query and to render xml by iterating over the result object: > db: 0.01993 second > render: 0.00087 second > total: 0.02671 second > > Then with a large result set (17,142 records): > db: 0.09306 second > render: 67.98967 seconds > total: 68.08277 > > On version 0.23 and the large result set (17,142 records): > db: 0.06552 > render: 0.16659 > total: 0.23248 > > Clearly the render function is the problem. This function takes the > db result object as a parameter, and iterates over it to create the > xml: > > def render_xml(items): > xml = '<?xml version=\"1.0\"?>\n' > xml += '<rootnode>\n' > for item in items: > xml += '<itemnumber>%s</itemnumber>\n' % item.id > xml += '<description>%s</description>\n' % item.descr > xml += '<quantity>%s</quantity>\n' % item.qty > ... > return xml > > dbresult = db.query(querystring) > return render_xml(dbresult) > > On Jan 1, 8:04 pm, "Aaron Swartz" <[email protected]> wrote: > > Can you share more details? Code? Profiler output? > > > > On Jan 1, 2009 10:55 PM, "mb" <[email protected]> wrote: > > > > I have a web service that queries a database and returns a fairly > > large xml document based on parameters in the URL. > > > > This morning, with web.py 0.23, it would return a 17,142 line response > > (491k) in 200 ms. > > > > This afternoon I upgraded to 0.31, and it now takes 56 seconds for the > > same action. > > > > For the entire 56 seconds, the cpu is pegged at 100% on the python > > process with just one request, where on 0.23 I could run many > > simultaneous requests and the cpu was rarely over 40%. > > > > Any ideas why my performance has dropped by a factor of 300? > > > -- Su zhaohui 苏召辉 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web.py" 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/webpy?hl=en -~----------~----~----~----~------~----~------~--~---
