Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsGeneralPHPASPPerlColdFusionFlashHTML, CSS, ScriptsBrowsers

Webmaster Forum / HTML, CSS, Scripts / JavaScript / July 2008



Tip: Looking for answers? Try searching our database.

Using AJAX/JSON and performance issues with eval()

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
bizt - 01 Jul 2008 11:38 GMT
Hi,

Im currently looking to move into using JSON for AJAX instead of
returning from the server a string like the following:

12345{This is a text string{true[1234|This is another set of fields|
null

This is returned from the server and I use split() and loops to
generate JS arrays / nested arrays at the client end. I cannot use XML
is it is deemed to heavy for the website as we deal with very high
volumes of traffic and trying to reduce the data sent back and forth
through the client and servers. The problem with the above is that it
makes my life as a JS programmer harder coz I have to do all this
splitting and looping to seperate the data

Now JSON seems the perfect on both fronts - it is lightweight and I
only have to use a single eval() to replace what splits() and loops
done previously. I can also have as many levels and nesting as I wish.
There are a couple of conserns I have here tho:

Eval() I have heard can be quite slow? Is this a serious concern for
large data sets? Even if it is slow, is it still going to be faster
than my previous method above?

I understand that you can have a JSON format for JS arrays and JS
objects:

// array
{0: 12345,2:"This is a text string"}

// object
[12345,"This is a text string"]

I prefer objects because I dont need to specifiy the index key and I
can treat it exactly like an array - oSet[0] = ...
Are objects just as quick to access/alter as arrays? I have a few
simultaneous client processes going on (ie. refreshing multiple HTML
tables automatically in the background) and really want it to perform
well.

Is there anything else worth considering when using JSON? My website
is mainly just updating content on multiple tables and refreshing data
every so often, thats about the extent of it.

Thanks

Burnsy
Thomas 'PointedEars' Lahn - 01 Jul 2008 13:02 GMT
> Im currently looking to move into using JSON for AJAX instead of
> returning from the server a string like the following:
[quoted text clipped - 12 lines]
> Eval() I have heard can be quite slow? Is this a serious concern for
> large data sets?

I don't think so.

> Even if it is slow, is it still going to be faster than my previous
> method above?

Probably yes.  eval() evaluates its string argument as an ECMAScript
Program.  This evaluation is implemented in native, already compiled (with
few exceptions platform-dependent) code.  That should be considerably faster
to execute than your implementation, which needs to be JIT-compiled and the
resulting byte-code interpreted by a VM first.

> I understand that you can have a JSON format for JS arrays and JS
> objects:

Just to add to confusion: JS arrays are implemented as objects, Array
objects.  What you call "JS objects" here, are (augmented) Object objects.

> // array
> {0: 12345,2:"This is a text string"}
[quoted text clipped - 4 lines]
> I prefer objects because I dont need to specifiy the index key and I can
> treat it exactly like an array - oSet[0] = ...

The above is the reason for that.  `0' is the name of either object's
property, only that the method of property access with Array objects differs
slightly from that of other objects.

> Are objects just as quick to access/alter as arrays?

I think they are quicker to alter than arrays when it comes to inserting
items, and just as quick when accessing items.  To be sure, you could do an
estimation of general runtime efficiency on the corresponding algorithms in
the ECMAScript Specification, Edition 3 Final, and compare with empirical
results for different input.

> I have a few simultaneous client processes going on (ie. refreshing
> multiple HTML tables automatically in the background) and really want it
[quoted text clipped - 3 lines]
> mainly just updating content on multiple tables and refreshing data every
> so often, thats about the extent of it.

When dealing with tables, you should consider a combination of both:

 [
   {x: 42, z: 23},
   {x: 1337, z: 1701}
 ]

PointedEars

P.S.
Please don't use off-Usenetter slang like "coz" here.  Besides presenting
you as a semi-literate, this is an international newsgroup.
Signature

Prototype.js was written by people who don't know javascript for people
who don't know javascript. People who don't know javascript are not
the best source of advice on designing systems that use javascript.
 -- Richard Cornford, cljs, <f806at$ail$1$8300dec7@news.demon.co.uk>

 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.