2013-07-10 42 views
8

我一直在perl腳本中使用JSON包,解析一長串相對較短的JSON字符串,並使用Devel :: NYTProf來分析該過程。似乎大部分時間都是由JSON string函數在解析過程中進行的。在Perl中加速JSON解析

除了不使用JSON包以外,是否還有其他可以使用的加速功能,並嘗試通過自己解析來加速它?

編輯:JSON包安裝在系統中使用cpanm。如果通過優化安裝過程獲得任何加速,他們也受到歡迎。

+4

您的系統上是否安裝了'JSON :: XS'? – innaM

+3

'如果JSON :: XS不可用,JSON使用JSON :: PP對象,而不是JSON :: XS,它是爲純Perl.'非常緩慢從CPAN文檔的JSON模塊 – Suic

回答

12

嘗試安裝JSON::XS。然後,「使用JSON」會自動使用XS版本。這個模塊是用C編寫的,而且它有很好的性能。

+0

謝謝,這取得了巨大的差異。它仍然是關於X2比一個正則表達式慢,但更強大的使用JSON查詢。 – 719016

+5

原因很慢於正則表達式可能是你的正則表達式將無法對任何一種有效的JSON的轉換成一個Perl的數據結構。 – innaM

0

另一個有趣的解決方法:

如果您需要解析JSON這樣你就可以從一個大的JSON對象extrat更小的塊,並表示JSON對象來通過一個web應用程序 - 簡單地解析和削減下來的JSON在較小的塊在將JavaScript發送給Perl之前

JS具有驚人的快速,高效的字符串到JSON解析器(Douglas Crockford's parsereval,僅僅是明確的),即使你開始用繩子和 JSON數據結構本身。