[Shootout-list] process creation & message passing

Bengt Kleberg bengt.kleberg@ericsson.com
Mon, 18 Oct 2004 13:46:46 +0200


Isaac Gouy wrote:
> The new process creation & message passing tests will not provide a
> measurement of the time to create a thread, or the time to pass
> messages between threads, for most of the languages in the Shootout.

i have tried to make my description of the tests in such a way so as to 
make it possible to measure the times for creation (procinst) and 
message passing (ringmsg).
if i have failed, by makeing a description that makes it impossible for 
most languages to create processes, i am willing to change the test 
description.
however, there is a limit to the changes i can make. i want to measure 
the time it takes to create, and maintain, a variable amount of 
processes, not something else.


> Most of the languages will be excluded. They'll be excluded because
> they use kernel threads for concurrency, and there's not enough memory
> on the test machine.

i disagree. even languages that use kernel threads can create threads. 
it is not impossible.
it might be harder, but how hard it is, is the thing i want to measure.


> imo Good tests would *include* most of the languages.

i disagree. if we follow this idea with all tests we will get too much 
noise. imho only the languages that can do what we want to test should 
be allowed in a test. otherwise we end up with test results like the 
current objinst. i think objinst is a failure.


> Here are 2 tests that should provide rankings for languages that
> provide concurrency; 2 tests that use the same basic structure.
> 
> chainmsg 
> - create 3000 *linked* processes/threads/... 
> - send message 0 from one end of the chain
> - each process/thread/... receives an integer x, stores x, 
> and passes x+1 to the next process/thread/... in the chain
> : print the final message (which should be 3000)
> (2 parameters: how many messages are sent, how many times
> 'create'/'send-messages' is repeated)

what is a linked process?
how do we get a graph over n from this test (ie, which of the 2 
parmametes is n)?


> chain 
> - create 3000 *linked* processes/threads/...
> : print the number of processes 3000 (show program didn't silently
> fail)
> (1 parameter: how many times 'create' is repeated)
> 

what is a linked process?
how do we get a graph over n from this test?


if time permits i would like if you explained why we should stop at 
3000. this is only out of curiosity and not needed to implement the tests.


bengt