Okay, I did the calculations test in my Linux VM using command line (fred0), Flask (hello0), and web2py (Welcome).
fred0: elapsed time: 0.00159001350403 fred0: elapsed time: 0.0015709400177 fred0: elapsed time: 0.00156021118164 fred0: elapsed time: 0.0015971660614 fred0: elapsed time: 0.00315999984741 hello0: elapsed time: 0.00271105766296 hello0: elapsed time: 0.00213503837585 hello0: elapsed time: 0.00195693969727 hello0: elapsed time: 0.00224900245667 hello0: elapsed time: 0.00205492973328 Welcome: elapsed time: 0.0484869480133 Welcome: elapsed time: 0.00296783447266 Welcome: elapsed time: 0.00293898582458 Welcome: elapsed time: 0.00300216674805 Welcome: elapsed time: 0.00312614440918 The Welcome discrepancy is just under 2x, not nearly as bad as 10x in my shipping code. On Sunday, 16 March 2014 17:52:00 UTC-4, Massimo Di Pierro wrote: > > In order to isolate the problem one must take it in steps. This is a good > test but you must first perform this test with the code you proposed before: > > def test(): > t = time.time > start = t() > x = 0.0 > for i in range(1,5000): > x += (float(i+10)*(i+25)+175.0)/3.14 > debug("elapsed time: "+str(t()-start)) > return > > I would like to know the results about this test code first. > > The other code you are using performs an import: > > from shippackage import Package > > > Now that is something that is very different in web2py and flask for > example. In web2py the import is executed at every request (although it > should be cached by Python) while in flask it is executed only once. This > should also not cause a performance difference but it is a different test > than the one above. > > TLTR: we should test separately python code execution (which may be > affected by threading) and import statements (which may be affected by > web2py custom_import and/or module weird behavior). > > > > On Sunday, 16 March 2014 08:47:13 UTC-5, horridohobbyist wrote: >> >> I've conducted a test with Flask. >> >> fred.py is the command line program. >> hello.py is the Flask program. >> default.py is the Welcome controller. >> testdata.txt is the test data. >> shippackage.py is a required module. >> >> fred.py: >> 0.024 second >> 0.067 second >> >> hello.py: >> 0.029 second >> 0.073 second >> >> default.py: >> 0.27 second >> 0.78 second >> >> The Flask program is slightly slower than the command line. However, the >> Welcome app is about 10x slower! >> >> *Web2py is much, much slower than Flask.* >> >> I conducted the test in a Parallels VM running Ubuntu Server 12.04 (1GB >> memory allocated). I have a 2.5GHz dual-core Mac mini with 8GB. >> >> >> I can't quite figure out how to use gunicom. >> >> >> On Saturday, 15 March 2014 23:41:49 UTC-4, horridohobbyist wrote: >>> >>> I'll see what I can do. It will take time for me to learn how to use >>> another framework. >>> >>> As for trying a different web server, my (production) Linux server is >>> intimately reliant on Apache. I'd have to learn how to use another web >>> server, and then try it in my Linux VM. >>> >>> >>> On Saturday, 15 March 2014 22:45:27 UTC-4, Anthony wrote: >>>> >>>> Are you able to replicate the exact task in another web framework, such >>>> as Flask (with the same server setup)? >>>> >>>> On Saturday, March 15, 2014 10:34:56 PM UTC-4, horridohobbyist wrote: >>>>> >>>>> Well, putting back all my apps hasn't widened the discrepancy. So I >>>>> don't know why my previous web2py installation was so slow. >>>>> >>>>> While the Welcome app with the calculations test shows a 2x >>>>> discrepancy, the original app that initiated this thread now shows a 13x >>>>> discrepancy instead of 100x. That's certainly an improvement, but it's >>>>> still too slow. >>>>> >>>>> The size of the discrepancy depends on the code that is executed. >>>>> Clearly, what I'm doing in the original app (performing permutations) is >>>>> more demanding than mere arithmetical operations. Hence, 13x vs 2x. >>>>> >>>>> I anxiously await any resolution to this performance issue, whether it >>>>> be in WSGI or in web2py. I'll check in on this thread periodically... >>>>> >>>>> >>>>> On Saturday, 15 March 2014 16:19:12 UTC-4, horridohobbyist wrote: >>>>>> >>>>>> Interestingly, now that I've got a fresh install of web2py with only >>>>>> the Welcome app, my Welcome vs command line test shows a consistent 2x >>>>>> discrepancy, just as you had observed. >>>>>> >>>>>> My next step is to gradually add back all the other apps I had in >>>>>> web2py (I had 8 of them!) and see whether the discrepancy grows with the >>>>>> number of apps. That's the theory I'm working on. >>>>>> >>>>>> Yes, yes, I know, according to the Book, I shouldn't have so many >>>>>> apps installed in web2py. This apparently affects performance. But the >>>>>> truth is, most of those apps are hardly ever executed, so their >>>>>> existence >>>>>> merely represents a static overhead in web2py. In my mind, this >>>>>> shouldn't >>>>>> widen the discrepancy, but you never know. >>>>>> >>>>>> >>>>>> On Saturday, 15 March 2014 11:19:06 UTC-4, Niphlod wrote: >>>>>>> >>>>>>> @mcm: you got me worried. Your test function was clocking a hell >>>>>>> lower than the original script. But then I found out why; one order of >>>>>>> magnitude less (5000 vs 50000). Once that was corrected, you got the >>>>>>> exact >>>>>>> same clock times as "my app" (i.e. function directly in the >>>>>>> controller). I >>>>>>> also stripped out the logging part making the app just return the >>>>>>> result >>>>>>> and no visible changes to the timings happened. >>>>>>> >>>>>>> @hh: glad at least we got some grounds to hold on. >>>>>>> @mariano: compiled or not, it doesn't seem to "change" the mean. a >>>>>>> compiled app has just lower variance. >>>>>>> >>>>>>> @all: jlundell definitively hit something. Times are much more lower >>>>>>> when threads are 1. >>>>>>> >>>>>>> BTW: if I change "originalscript.py" to >>>>>>> >>>>>>> # -*- coding: utf-8 -*- >>>>>>> import time >>>>>>> import threading >>>>>>> >>>>>>> def test(): >>>>>>> start = time.time() >>>>>>> x = 0.0 >>>>>>> for i in range(1,50000): >>>>>>> x += (float(i+10)*(i+25)+175.0)/3.14 >>>>>>> res = str(time.time()-start) >>>>>>> print "elapsed time: "+ res + '\n' >>>>>>> >>>>>>> if __name__ == '__main__': >>>>>>> t = threading.Thread(target=test) >>>>>>> t.start() >>>>>>> t.join() >>>>>>> >>>>>>> I'm getting really close timings to "wsgi environment, 1 thread >>>>>>> only" tests, i.e. >>>>>>> 0.23 min, 0.26 max, ~0.24 mean >>>>>>> >>>>>>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.