一直想測(cè)試一下json的解析速度,前些天終于花了一點(diǎn)時(shí)間測(cè)了一下,在我的破筆記本上,解析一個(gè)包含10個(gè)元素(各種類型都有)的object型json,1秒鐘大概只能解析不到10w次,就算把內(nèi)存池用到極致也只能解析12.5w次左右,換用自己定義的一種bjson格式,速度快了一些,但也不超過(guò)20w次,想想工作量也的確很大,生成一個(gè)包含10個(gè)子元素的object,需要?jiǎng)討B(tài)分配最少10次,還要做最少10次hash的insert,還有各種格式的轉(zhuǎn)換工作,里面有array和object還要額外分配容器并處理子對(duì)象,這可都是耗時(shí)操作,終于明白了為什么webserver為何一秒鐘只能處理幾千個(gè)請(qǐng)求甚至只能處理幾百個(gè)請(qǐng)求了,看來(lái)要將游戲協(xié)議完全用json暫時(shí)還是不大可取,從效率上看折中點(diǎn)的做法依然是struct+json或struct+string\0string\0…,這些我以前的blog都寫(xiě)過(guò),只是現(xiàn)在找到了效率上的依據(jù),畢竟游戲服務(wù)器一秒都是要處理幾萬(wàn)數(shù)據(jù)包的,要是全是json光解析json就把時(shí)間耗光了,更不用說(shuō)去處理其他任務(wù)了。