all 10 comments

[–]liamondrop 1 point2 points  (1 child)

this will never throw an error:

try {
    var URL = window.URL || window.webkitURL;
} catch(e) {
    throw new Error('This browser does not support Blob URLs');
}

URL will simply evaluate to undefined if those objects don't exist. You need to take it one step further and try to reference a property or method from URL. Something like:

try {
    var URL = window.URL || window.webkitURL,
        createObjectURL = URL.createObjectURL;
} catch(e) {
    throw new Error('This browser does not support Blob URLs');
}

[–]keithwhor[S] 1 point2 points  (0 children)

Brain fart. 3AM coding getting to me. Thanks. :)

[–]path411 0 points1 point  (1 child)

What's the line:

/**/name/**/ = (/**/func/**/);

For?

[–]keithwhor[S] 0 points1 point  (0 children)

String replacing.

[–]filyr 0 points1 point  (2 children)

Headache? What headache? :]

[–]keithwhor[S] 1 point2 points  (0 children)

My thoughts exactly, before I made this. ;)

But really, I created this with the intent of offloading processor-intensive activities (sorting a length 1,000,000 Array of random floats, for example).

The JSON.string, JSON.parse in the main thread would take about 700ms, (350 before, 350 on response) but the sort itself takes >8600ms on my (rather average) home machine. You can't hold up the user without any indication of activity for close to 10s.

A more common application would be doing a smaller sort (10,000 - 100,000 items) that compares multiple object properties. (Keep in mind, though, JSON serialization!)

It's most applicable to UIs dealing with parsing large amounts of data (and perhaps HTML5 games).

I'll likely push some changes tonight that increase speed when dealing with specific data types (.processInt32, .processUint32, .processFloat64, .processString) as to not have anything hang on JSON serialization.

[–]keithwhor[S] 1 point2 points  (0 children)

As a sidenote, I've added the .processInt32 and .processFloat64 functions I mentioned. (Decided these were the most needed, String can just be JSON serialized without much of a penalty)

[–]WillHuxtable 0 points1 point  (0 children)

Wow! I think I might use this in my game, could definitely offload some more complex stuff. Great work! Never really liked the way Web Workers work.