← All posts tagged code

Kxepal
code simpleubjson Python
В посте #1753626 замерял скорость работы своей библиотеки ubjson против библиотек json (да-да, апельсины против яблок!). Результаты были печальны, но ожидаемы. Тем временем посидев-подумав, докрутил производительность до +20-40%. Еще открыл для себя cython: +50% к скорости сверху за просто так весьма неплохо - нужно будет прикрутить его при установке как опцию.

sys.version : '2.7.3 (default, Jul  5 2012, 08:55:40) \n[GCC 4.5.3]'
sys.platform : 'linux2'
* [test_1] Handle 4KB sized CouchDB document with various data
    * [cython] Decoded in 52.938107 (0.000529 / call)
    * [cython] Encoded in 60.032089 (0.000600 / call)
    
    * [native] Decoded in 105.954515 (0.001060 / call)
    * [native] Encoded in 106.602120 (0.001066 / call)

А вот PyPy на кодировании выдал какую-то сумашедшую цифру затраченного времени, возможно из-за обильного использования itertools.chain. Нужно разбираться.

sys.version : '2.7.2 (341e1e3821fff77db3bb5cdb7a4851626298c44e, Jul 15 2012, 19:18:28)\n[PyPy 1.9.0 with GCC 4.5.3]'
sys.platform : 'linux2'
* [test_1] Handle 4KB sized CouchDB document with various data
    * Decoded in 20.009146 (0.000200 / call)
    * Encoded in 126.725331 (0.001267 / call)
Kxepal
code fail Python
sys.version : '2.7.2 (default, Jan  3 2012, 04:15:49) \n[GCC 4.6.2]'
sys.platform : 'linux2'
* [test_couchdb4k] Decode 4KB sized CouchDB document with various data (100000 times)
    * [simpleubjson] 139.804502 (0.001398 per call)
    * [        json]  10.395652 (0.000104 per call)
    * [       ujson]   4.688209 (0.000047 per call) 
    * [  simplejson] 152.967937 (0.001530 per call) 
    * [simplejson_с]   7.520306 (0.000075 per call) 

Порван в ключья(: Хотя если выключить оптимизации у simplejson, то вроде и не все так плохо, но это синтетика. Придется запиливать сишный модуль на сканирование потока в поиске маркеров, иначе совсем не серьезно как-то.