PVS 3.x 以前では、ソケットにblocking I/Oのみ実装し利用していました。
PVS 4.0 を設計する際に、検証に利用したハードウェアにおいて、
non-blocking I/Oがblocking I/Oより30%以上の速度の向上が確認されました。
この結果により、non-blocking I/Oをデフォルトに設定いたしました。
また、検証することができないハードウェアにおける予期しない影響による重大な
問題を避けるために、blocking I/Oを有効にできるようにオプションを残しました。

Blocking I/O = Synchronous(同期) I/O.  
つまり、すべてのソケットコールは、返信の前に完了を待たなければなりません。

Non-blocking I/O = Asynchronous(非同期) I/O.  
つまり、すべてのソケットコールはすぐに返信します。
I/Oが完了したかどうかは、イベントを待つかステータスを確認しなければなりません。

一般的にはNon-blocking I/O (非同期 I/O) がより高速になります。
しかし、速度は、ハードウェア、OSのバージョンに大きく依存します。
したがって、ある特定のハードウェアの組み合わせにおいては、
blocking (Synchronous) I/Oがより高速に動作することもあります。


It’s really there for legacy reasons.  PVS 3.X and previous used blocking I/O on sockets.   When we designed 4.0 our testing showed that non-blocking I/O was about 30% faster on the hardware we had to test with.  So we used non-blocking I/O as the default.  But in order to avoid any major problems with unforeseen consequences on hardware we could not test with, we left blocking I/O in as an option the customer could enable. 

Blocking I/O = Synchronous I/O.  i.e. all socket calls must wait for completion before returning.

Non-blocking I/O = Asynchronous I/O.  i.e. all socket calls return immediately.  We must wait for an event or check a status to determine when I/O completes.

Non-blocking I/O (Asynchronous I/O) is generally faster.  But much depends on hardware, OS version, etc.  So both versions are included “just in case” some particular hardware combination works better with blocking (Synchronous) I/O.