I'm a bit embarrassed - it suddenly occurred to me this afternoon that maybe the network whose performance I was worried about was just too simple, as I only had two process**es**, and two process**ors**. So Windows may have been trying too hard to keep the processors balanced! So I wondered what would happen if I gave Windows lots of processes.
I set up two networks:
a) 50 Generate components feeding 50 Discard components - i.e. highly parallel network - so that's 100 threads in total
b) 50 Generate components feeding 1 Discard component - i.e. highly "funnelled" network - so that's 51 threads
I ran each one 6 times with a connection capacity of 10, and 6 times with a connection capacity of 100. Every run generated a total of 50 * 20,000 information packets, for a total of 1,000,000 packets, and ran for about 1 minute..
Here are the averages of the 4 cases:
a) with connection capacity of 10 - 59.151 secs.
a) with connection capacity of 100 - 52.008 secs.
b) with connection capacity of 10 - 76.745 secs.
b) with connection capacity of 100 - 60.667 secs.
So it looks like the connection capacity does make a difference! And, it looks like JavaFBP performs reasonably well... I apologize for being a bit hasty - but maybe it made us all think a bit more deeply about multithreading in a multicore machine... ;-)
Apologies again, and thanks to everyone who contributed thoughts on this topic!