Ok, it all sounds in order to me - someone want to file a ticket? http://dev.jquery.com/newticket
--John On Wed, May 20, 2009 at 10:04 AM, mike.helgeson <mike.helge...@gmail.com>wrote: > > The YUI compressor does not seem complain about using the Function > technique. > > (function(){ > > function evaluate( data ){ > return Function("return "+( data ) )(); > }; > > })(); > > becomes... > > (function(){function A(B){return Function("return "+(B))()}})(); > > > On May 20, 9:06 am, John Resig <jere...@gmail.com> wrote: > > Has anyone been able to figure out if YUIMin still behaves as you would > > expect it to? > > > > --John > > > > On Wed, May 20, 2009 at 6:48 AM, Andrea Giammarchi < > > > > andrea.giammar...@gmail.com> wrote: > > > Ok, the reason eval is so slow is because of FireBug, it costed 17 > seconds > > > with FireBug enabled while FireBug seems to do not affect Function > execution > > > (which makes Function against better than eval). > > > > > In any case, Function is faster or exactly fast as eval is, even in > > > Internet Explorer, at least in my tests. > > > > > this is a truly simple readapted test case: > > > > > <!DOCTYPE html> > > > <script type="text/javascript"> > > > portable = (function(msg, i, interval){ > > > function timeout(){ > > > alert(msg.join("\n")); > > > msg = []; > > > i = 0; > > > }; > > > return { > > > log:function(test){ > > > msg[i++] = test; > > > clearTimeout(interval); > > > interval = setTimeout(timeout, 100); > > > } > > > } > > > })([], 0, 0); > > > var count = 10000, o = null, i = 0, jsonString = > > > > '{"value":{"items":[{"x":1,"y":2,"z":3},{"x":1,"y":2,"z":3},{"x":1,"y":2,"z":3},{"x":1,"y":2,"z":3},{"x":1,"y":2,"z":3}]},"error":null}'; > > > var beginTime = new Date(); > > > for ( i = 0; i < count; i++ ) > > > o = eval( "(" + jsonString + ")" ); > > > portable.log( "eval:" + ( new Date() - beginTime ) ); > > > var beginTime = new Date(); > > > for ( i = 0; i < count; i++ ) > > > o = new Function( "return " + jsonString )(); > > > portable.log( "new Function:" + ( new Date() - beginTime ) ); > > > var beginTime = new Date(); > > > for ( i = 0; i < count; i++ ) > > > o = Function( "return " + jsonString )(); > > > portable.log( "Function:" + ( new Date() - beginTime ) ); > > > var beginTime = new Date(); > > > var callback = Function( "return " + jsonString ); > > > for ( i = 0; i < count; i++ ) > > > o = callback(); > > > portable.log( "precompiled Function:" + ( new Date() - beginTime ) ); > > > if(this.JSON){ > > > var beginTime = new Date(); > > > for ( i = 0; i < count; i++ ) > > > o = JSON.parse(jsonString); > > > portable.log( "native:" + ( new Date() - beginTime ) ); > > > }; > > > </script> > > > > > Let me know what you think. > > > > > Regards > > > > > On Wed, May 20, 2009 at 7:43 AM, Andrea Giammarchi < > > > andrea.giammar...@gmail.com> wrote: > > > > >> As I said, Function does not do scope resolution except the global one > so > > >> in my opinion should be always preferred for JSON evaluations. Firefox > does > > >> not care about implicit returned value plus brackets plus scope, it > simply > > >> create the anonimous function doing a syntax check and returns errors > only > > >> at call time so if there are no errors the precompiled funcion will be > like > > >> a manual one, time for parsing syntax is then one against every eval > call. > > >> To be fair, that bench make sense declaring the function once and > simply > > >> calling it inside the for to always return the same object. > Unfortunately > > >> this is not a real world case. > > > > >> On May 20, 2009 7:33 AM, "Michael Geary" <m...@mg.to> wrote: > > > > >> Function( 'return ' + data )() is also MUCH faster in Firefox than > eval. > > > > >> In a test case of JSON data containing 1000 names and addresses (about > > >> 112KB), eval() takes a full second to execute on my machine in Firefox > 3. On > > >> all other browsers (including IE!) it takes hardly any time at all. > > > > >> The Function version takes essentially no time in Firefox. (Didn't > test it > > >> in other browsers.) > > > > >> -Mike > > > > >> ------------------------------ > > >> *From:* jquery-dev@googlegroups.com [mailto: > jquery-...@googlegroups.com] > > >> *On Behalf Of *John Resig > > >> *Sent:* Tuesday, May 19, 2009 4:20 PM > > >> *To:* jquery-dev@googlegroups.com > > >> *Subject:* [jquery-dev] Re: window['eval']() in rhino > > > > >> > I don't remember the original discussion/change, off-hand. If YUIMin > is > > >> still able to generate an ... > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---