Python 3.4 tip
without patch:
$ ./python.exe decodebench.py
strict: 0.0005547050022869371
ascii + surrogateescape: 0.0006213680026121438
binary + surrogateescape: 0.18936741600191453
$ ./python.exe decodebench.py
strict: 0.0004597200022544712
ascii + surrogateescape: 0.0005151459990884177
binary + surrogateescape: 0.19078156799514545
$ ./python.exe decodebench.py
strict: 0.00045938100083731115
ascii + surrogateescape: 0.0005216380013735034
binary + surrogateescape: 0.19628148400079226
with patch:
$ ./python.exe decodebench.py
strict: 0.0005446709983516484
ascii + surrogateescape: 0.0006286909992923029
binary + surrogateescape: 0.002856942002836149
$ ./python.exe decodebench.py
strict: 0.0004874210062553175
ascii + surrogateescape: 0.0005456319995573722
binary + surrogateescape: 0.002613579999888316
$ ./python.exe decodebench.py
strict: 0.00047337100113509223
ascii + surrogateescape: 0.000526505995367188
binary + surrogateescape: 0.0024735779952607118