Hi Igor,<div><br></div><div>Objects passed via message ports (including the intrinsic port for dedicated workers) are cloned. I can't speak for other implementations, but in WebKit I believe cloned objects aren't JSON encoded/decoded, but instead there is another native mechanism for cloning these objects that will likely be faster than JSON encoding.</div>

<div><br></div><div>That said, I'm not sure that "parsing large JSON files" is the best WebWorker use case, depending on how you're doing the parsing and how large the files are.</div><div><br></div><div>

-atw<br><br><div class="gmail_quote">On Tue, Dec 28, 2010 at 10:35 AM, Igor Minar <span dir="ltr"><<a href="mailto:iiminar@gmail.com">iiminar@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Hello,<br>
<br>
I'm exploring the possibilities of using web workers for parsing large<br>
JSON files outside of the main UI thread.<br>
<br>
I found several references that this could be one of the use cases for<br>
web workers (e.g. oreilly's intro to web workers [1]). However, the<br>
more I read about webworkers, the less attractive they are for this<br>
purpose, mainly because of how data is passed from worker to the main<br>
thread.<br>
<br>
Please correct me if I'm wrong, but my understanding is that any data<br>
that is returned in the message from the worker, is copied rather than<br>
shared and it seems that this is often implemented by serializing the<br>
data into a json string and then deserializing it in the main script.<br>
Is this right? Because if it is, then what's the point of parsing the<br>
json string in worker thread, just to serialize it and then parse it<br>
again in the main thread.<br>
<br>
I'd love to be wrong about this because the concept of workers looks<br>
like a perfect match for my use case (parsing large json payloads<br>
quickly without affecting the UI), but my trivial microbenchmarks show<br>
that the overhead of passing the data to, as well as from the<br>
webworker is just too big to use it for this purpose.<br>
<br>
thanks,<br>
Igor<br>
<br>
<br>
[1] <a href="http://answers.oreilly.com/topic/1358-introducing-the-web-workers-api/" target="_blank">http://answers.oreilly.com/topic/1358-introducing-the-web-workers-api/</a><br>
_______________________________________________<br>
Help mailing list<br>
<a href="mailto:Help@lists.whatwg.org">Help@lists.whatwg.org</a><br>
<a href="http://lists.whatwg.org/listinfo.cgi/help-whatwg.org" target="_blank">http://lists.whatwg.org/listinfo.cgi/help-whatwg.org</a><br>
</blockquote></div><br></div>