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#64f76c562366aec4willitbe added 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to