[webkit-dev] support for navigator.cores or navigator.hardwareConcurrency
Benjamin Poulain
benjamin at webkit.org
Wed May 7 17:07:38 PDT 2014
On 5/7/14, 4:13 PM, Benjamin Poulain wrote:
> On 5/7/14, 3:52 PM, Filip Pizlo wrote:
>> Exactly. Ben, Oliver, and others have made arguments against web
>> workers. Rik is not proposing web workers. We already support them. The
>> point is to give API to let developers opt into behaving nicely if they
>> are already using web workers.
>
> I have nothing against Web Workers. They are useful to dispatch
> background tasks.
>
> They are basically the Web equivalent dispatch_async() of GCD, which is
> already a very useful tool.
>
> What you are suggesting is useful for making Web Workers the tool to do
> high performance multi-thread computation.
> I don't think Web Workers are a great tool for that job at the moment. I
> would prefer something along TBB, GCD or something like that.
>
>
> For high performance computation, I think a more useful API would be
> something like TBB parallel_for with automatic chunking.
> It is actually had to do faster than that with the number of cores
> unless you know your task very very well.
>
> It would be a little more work for us, but a huge convenience for the
> users of Web Workers.
After chatting with Filip, it seems such a model is unlikely to happen
anytime soon for JavaScript.
In the absence of any tasks/kernels model, I am in favor of exposing a
"good number of thread" API. It is definitely better than nothing.
Benjamin
>> They can already write code that overloads the system but they currently
>> have *no* way of writing code that even tries to be well-behaved except
>> maybe to avoid workers entirely.
>>
>> I'm also a little disturbed by arguments against the general usefulness
>> of ncpu. We use it for the parallel JIT and parallel GC because
>> regardless of system load those are *the best* guesses of how many cpus
>> to use.
>>
>> -Fil
>>
>> On May 7, 2014, at 3:24 PM, Rik Cabanier <cabanier at gmail.com
>> <mailto:cabanier at gmail.com>> wrote:
>>
>>>
>>>
>>>
>>> On Wed, May 7, 2014 at 3:19 PM, Oliver Hunt <oliver at apple.com
>>> <mailto:oliver at apple.com>> wrote:
>>>
>>>
>>> On May 7, 2014, at 3:15 PM, Rik Cabanier <cabanier at gmail.com
>>> <mailto:cabanier at gmail.com>> wrote:
>>>
>>>>
>>>>
>>>>
>>>> On Wed, May 7, 2014 at 2:47 PM, Oliver Hunt <oliver at apple.com
>>>> <mailto:oliver at apple.com>> wrote:
>>>>
>>>>
>>>> On May 7, 2014, at 2:41 PM, Rik Cabanier <cabanier at gmail.com
>>>> <mailto:cabanier at gmail.com>> wrote:
>>>> >
>>>> > When would I as a user, not want a page or web application
>>>> to be as fast as possible? Has a user ever complained about a
>>>> desktop app that uses too many of his CPU's? I think Oliver's
>>>> point was that other processes might fight for the same CPU
>>>> resources but that is not unexpected for users.
>>>>
>>>> What happen if i go to your website while i'm doing something
>>>> else in the background? What if i'm playing a game while
>>>> waiting for my machine to do something else? What if your
>>>> page is in the background? Or my battery is running low.
>>>>
>>>>
>>>> Sure. However, a page can already do this today.
>>>> This will just give the author a way to make a semi-informed
>>>> decision. Without this, he might just spin up too many threads
>>>> and starve the rest of the system.
>>>>
>>>> You need to stop thinking in terms of a user wanting only one
>>>> thing to happen at a time.
>>>>
>>>>
>>>> I'm not sure if I follow. How would this be any different from a
>>>> regular desktop application?
>>>
>>> The argument is that this is not behaviour that users want - the
>>> fact that desktop applications do this is a bug in the programming
>>> model.
>>>
>>> APIs like GCD were specifically created to allow a developer to
>>> make an application than can automatically scale (or descale) to
>>> match the behaviour that is best for the user. That’s the model we
>>> want to encourage on the web.
>>>
>>>
>>> Filip already covered this much better than I could in the webkit bug:
>>> https://bugs.webkit.org/show_bug.cgi?id=132588
>>>
>>> This proposal is not about inventing a thread/task scheduling
>>> mechanism; this is just a way to make an informed guess without having
>>> to use a polyfill,
>>> _______________________________________________
>>> webkit-dev mailing list
>>> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
>>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>>
>>
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>>
>
More information about the webkit-dev
mailing list