Serhiy Storchaka <storch...@gmail.com> added the comment: The patches updated to stylistic conformity of the UTF-8 decoder. Patch B is significantly accelerated for aligned input data (i. e. almost always), especially for natural order. The UTF-32 decoder can now be faster than ASCII decoder! May be it is time to change the title to "Amazingly faster UTF-32 decoding"? ;)
Py3.2 Py3.3 patchA patchB utf-32le 'A'*10000 162 (+462%) 100 (+810%) 391 (+133%) 910 utf-32le 'A'*9999+'\x80' 162 (+411%) 99 (+736%) 377 (+120%) 828 utf-32le 'A'*9999+'\u0100' 162 (+277%) 95 (+543%) 324 (+89%) 611 utf-32le 'A'*9999+'\u8000' 162 (+278%) 95 (+545%) 324 (+89%) 613 utf-32le 'A'*9999+'\U00010000' 162 (+280%) 95 (+547%) 322 (+91%) 615 utf-32le '\x80'*10000 162 (+436%) 94 (+823%) 389 (+123%) 868 utf-32le '\x80'+'A'*9999 162 (+441%) 94 (+832%) 388 (+126%) 876 utf-32le '\x80'*9999+'\u0100' 162 (+273%) 90 (+571%) 320 (+89%) 604 utf-32le '\x80'*9999+'\u8000' 162 (+271%) 90 (+568%) 319 (+88%) 601 utf-32le '\x80'*9999+'\U00010000' 162 (+268%) 90 (+562%) 318 (+87%) 596 utf-32le '\u0100'*10000 161 (+445%) 83 (+958%) 405 (+117%) 878 utf-32le '\u0100'+'A'*9999 162 (+440%) 83 (+954%) 403 (+117%) 875 utf-32le '\u0100'+'\x80'*9999 162 (+444%) 83 (+963%) 403 (+119%) 882 utf-32le '\u0100'*9999+'\u8000' 162 (+441%) 83 (+955%) 404 (+117%) 876 utf-32le '\u0100'*9999+'\U00010000' 162 (+259%) 79 (+637%) 325 (+79%) 582 utf-32le '\u8000'*10000 162 (+441%) 83 (+955%) 404 (+117%) 876 utf-32le '\u8000'+'A'*9999 162 (+441%) 83 (+955%) 404 (+117%) 876 utf-32le '\u8000'+'\x80'*9999 161 (+448%) 83 (+964%) 403 (+119%) 883 utf-32le '\u8000'+'\u0100'*9999 161 (+443%) 83 (+954%) 402 (+118%) 875 utf-32le '\u8000'*9999+'\U00010000' 162 (+262%) 79 (+643%) 325 (+81%) 587 utf-32le '\U00010000'*10000 149 (+483%) 83 (+947%) 390 (+123%) 869 utf-32le '\U00010000'+'A'*9999 162 (+444%) 83 (+963%) 389 (+127%) 882 utf-32le '\U00010000'+'\x80'*9999 162 (+430%) 83 (+935%) 389 (+121%) 859 utf-32le '\U00010000'+'\u0100'*9999 162 (+429%) 83 (+933%) 389 (+120%) 857 utf-32le '\U00010000'+'\u8000'*9999 162 (+431%) 83 (+937%) 388 (+122%) 861 utf-32be 'A'*10000 162 (+199%) 100 (+384%) 393 (+23%) 484 utf-32be 'A'*9999+'\x80' 162 (+186%) 99 (+368%) 376 (+23%) 463 utf-32be 'A'*9999+'\u0100' 162 (+138%) 95 (+306%) 323 (+20%) 386 utf-32be 'A'*9999+'\u8000' 162 (+139%) 95 (+307%) 323 (+20%) 387 utf-32be 'A'*9999+'\U00010000' 162 (+138%) 95 (+305%) 322 (+20%) 385 utf-32be '\x80'*10000 161 (+196%) 94 (+407%) 389 (+23%) 477 utf-32be '\x80'+'A'*9999 161 (+197%) 94 (+409%) 387 (+24%) 478 utf-32be '\x80'*9999+'\u0100' 161 (+137%) 90 (+324%) 321 (+19%) 382 utf-32be '\x80'*9999+'\u8000' 162 (+135%) 89 (+328%) 320 (+19%) 381 utf-32be '\x80'*9999+'\U00010000' 162 (+134%) 89 (+326%) 318 (+19%) 379 utf-32be '\u0100'*10000 161 (+196%) 83 (+473%) 404 (+18%) 476 utf-32be '\u0100'+'A'*9999 161 (+196%) 83 (+475%) 402 (+19%) 477 utf-32be '\u0100'+'\x80'*9999 162 (+196%) 83 (+477%) 403 (+19%) 479 utf-32be '\u0100'*9999+'\u8000' 161 (+196%) 83 (+473%) 404 (+18%) 476 utf-32be '\u0100'*9999+'\U00010000' 162 (+131%) 79 (+373%) 325 (+15%) 374 utf-32be '\u8000'*10000 161 (+195%) 83 (+472%) 404 (+18%) 475 utf-32be '\u8000'+'A'*9999 161 (+197%) 83 (+476%) 402 (+19%) 478 utf-32be '\u8000'+'\x80'*9999 161 (+197%) 83 (+476%) 403 (+19%) 478 utf-32be '\u8000'+'\u0100'*9999 162 (+194%) 83 (+473%) 403 (+18%) 476 utf-32be '\u8000'*9999+'\U00010000' 161 (+133%) 79 (+375%) 325 (+15%) 375 utf-32be '\U00010000'*10000 148 (+222%) 83 (+473%) 391 (+22%) 476 utf-32be '\U00010000'+'A'*9999 161 (+198%) 83 (+477%) 389 (+23%) 479 utf-32be '\U00010000'+'\x80'*9999 162 (+194%) 83 (+473%) 389 (+22%) 476 utf-32be '\U00010000'+'\u0100'*9999 162 (+194%) 83 (+475%) 389 (+23%) 477 utf-32be '\U00010000'+'\u8000'*9999 161 (+196%) 83 (+475%) 389 (+23%) 477 ---------- Added file: http://bugs.python.org/file25537/decode_utf32_a_2.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue14625> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com