Simple straightforward test for the efficiency of BlockingCollection. The control run is on .NET Core which has roughly the same performance as the normal desktop .NET on Windows.
There's something wrong with Mono and it has been tested at least with versions 4.2.4 (EL7 EPEL), 4.4.2 (Fedora 25) and 4.6.2 (Xamarin MonoDevelop flatpak).
$ mono --version
Mono JIT compiler version 4.2.4 (tarball Mon Sep 19 02:09:55 UTC 2016)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: sgen
$ mono bin/Release/PipeBench.exe
BlockingPipeStream test starting.
BlockingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
BlockingPipeStream test read 65536000000 bytes in 10.291 seconds.
BufferingPipeStream test starting.
BufferingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
BufferingPipeStream test read 65536000000 bytes in 22.026 seconds.
CompatBufferingPipeStream test starting.
CompatBufferingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
CompatBufferingPipeStream test read 65536000000 bytes in 22.903 seconds.
$ dotnet --version
1.0.0-preview2-1-003177
$ dotnet bin/Release/netcoreapp1.1/PipeBench.dll
BlockingPipeStream test starting.
BlockingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
BlockingPipeStream test read 65536000000 bytes in 7.848 seconds.
BufferingPipeStream test starting.
BufferingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
BufferingPipeStream test read 65536000000 bytes in 7.723 seconds.
CompatBufferingPipeStream test starting.
CompatBufferingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
CompatBufferingPipeStream test read 65536000000 bytes in 6.986 seconds.
>"C:\Program Files\Mono\bin\mono.exe" PipeBench.exe
BlockingPipeStream test starting.
BlockingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
BlockingPipeStream test read 65536000000 bytes in 15.778 seconds.
BufferingPipeStream test starting.
BufferingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
BufferingPipeStream test read 65536000000 bytes in 23.576 seconds.
CompatBufferingPipeStream test starting.
CompatBufferingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
CompatBufferingPipeStream test read 65536000000 bytes in 23.819 seconds.
>PipeBench.exe
BlockingPipeStream test starting.
BlockingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
BlockingPipeStream test read 65536000000 bytes in 12,975 seconds.
BufferingPipeStream test starting.
BufferingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
BufferingPipeStream test read 65536000000 bytes in 8,244 seconds.
CompatBufferingPipeStream test starting.
CompatBufferingPipeStream test wrote 65536000000 bytes in 1000000 iterations.
CompatBufferingPipeStream test read 65536000000 bytes in 6,93 seconds.