Thank you Tim, your patch is in trunk! Massimo
On Dec 29, 3:09 pm, Timothy Farrell <tfarr...@swgen.com> wrote: > OK, I've got my faster method ready. But I have a question before we lock > down the API. > In your method, you have the mode parameter as either a dict or list type. > While expressing a similar thought, this is inaccurate since we're talking > about a Javascript result not a Python result. Instead the options should be > 'object' or 'array'. > If you look at my method, you'll see that the mode variable is merely an > indicator and not directly involved in the process (as it was in your method > revision 320 line #1427). > The full diff can be seen > here:http://bazaar.launchpad.net/~tfarrell-swgen/web2py/fasterJSON/revision/323?compare_revid=320 > Vince, do you have a preference with the mode API? Anyone else? > -tim > mdipierro wrote:Got it. Thank you Tim. Please look again at the latest trunk. > My implementation is much slower than yours but it is independent of the > database backend and I think this is a must. If you can you optimize it > further, that is very much welcome. Massimo On Dec 29, 11:02 am, > mdipierro<mdipie...@cs.depaul.edu>wrote:Sorry. I must have got confused. I do > not think I have seen your implementation than. Please email it to me. > Massimo On Dec 29, 9:22 am, Timothy Farrell<tfarr...@swgen.com>wrote:Yes, but > before I do that, I want to clarify something. My first implementation > results in a JSON list of objects like so (roughly):[ > {field1:'field1val',field2:'field2val'}, > {field1:'field1val',field2:'field2val'} ] Your reimplementation results in a > JSON list of lists where the first list is the field (column) names like so: > [ ['field1', 'field2'], ['field1val', 'field2val'], ['field1val', > 'field2val'] ] My implementation is more useful for programming in > Javascript. With your implementation (while more efficient on the wire), > requires that we have to unpack the data in client-side Javascript which adds > an extra step for the developer and, if the user has either IE and/or a slow > computer this could add an undesirable delay for large datasets (which was > the whole point of my using list comprehensions in the first place). So can I > send you a patch redone with my method (JSON list of objects)? -tim mdipierro > wrote:where? Can you send me a patch? Massimo On Dec 29, 9:01 am, Timothy > Farrell<tfarr...@swgen.com>wrote:You might want to switch back to list > comprehensions. Granted the code is uglier but there are two big reasons. 1) > Speed. Seehttp://www.daniweb.com/forums/thread32869.htmlfor more info. You > could wrap the inner loop inner workings in a function and still reap massive > benefits by not having to call list.append() n^2 times. 2) It's recommended > for building lists in Py3k. The results of the above linked test are:[0, 2, > 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, > 44, 46, 48, 50, 52, 54, 56, 58] [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, > 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58] > Profile of evenList1(), check the time consumed by the many append() calls: > (ignore time consumed by the profiler itself) 50005 function calls in 0.174 > CPU seconds Ordered by: standard name ncalls tottime percall cumtime percall > filename:lineno(function) 50000 0.066 0.000 0.066 0.000 :0(append) 1 0.002 > 0.002 0.002 0.002 :0(range) 1 0.005 0.005 0.005 0.005 :0(setprofile) 1 0.001 > 0.001 0.168 0.168 <string>:1(<module>) 1 0.100 0.100 0.168 0.168 > Script1.py:5(evenList1) 1 0.000 0.000 0.174 0.174 profile:0(evenList1()) 0 > 0.000 0.000 profile:0(profiler) Profile of evenList2(): (ignore time consumed > by the profiler itself) 5 function calls in 0.018 CPU seconds Ordered by: > standard name ncalls tottime percall cumtime percall > filename:lineno(function) 1 0.002 0.002 0.002 0.002 :0(range) 1 0.000 0.000 > 0.000 0.000 :0(setprofile) 1 0.001 0.001 0.018 0.018 <string>:1(<module>) 1 > 0.015 0.015 0.017 0.017 Script1.py:15(evenList2) 1 0.000 0.000 0.018 0.018 > profile:0(evenList2()) 0 0.000 0.000 profile:0(profiler) mdipierro wrote:OK. > it is in trunk but slightly different. The representation is now independent > on the dat abase backend. Massimo On Dec 29, 8:04 am, Timothy > Farrell<tfarr...@swgen.com>wrote:Massimo, would it help if I made a bzr > branch? Timothy Farrell wrote:I've been using this in my setup (my setup has > a few customizations) since the thread linked below. Just to say that it > works! -tim vince > wrote:http://groups.google.com/group/web2py/browse_thread/thread/8e3e33879974663f/64f76c562366aec4?lnk=gst&q=json#64f76c562366aec4willitbeadded > or we'll have to wait? i think it's hard to avoid all dependency contrib / > thirdparty package. as long as it's include i think that's fine. -vince-- > Timothy Farrell<tfarr...@swgen.com>Computer Guy Statewide General Insura nce > Agency (www.swgen.com)-- Timothy Farrell<tfarr...@swgen.com>Computer Guy > Statewide General Insurance Agency (www.swgen.com)-- Timothy > Farrell<tfarr...@swgen.com>Computer Guy Statewide General Insurance Agency > (www.swgen.com)-- Timothy Farrell<tfarr...@swgen.com>Computer Guy Statewide > General Insurance Agency (www.swgen.com)-- Timothy > Farrell<tfarr...@swgen.com>Computer Guy Statewide General Insurance Agency > (www.swgen.com) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---