シリアル化とJSONエンコードおよびデコードのパフォーマンス-パート2

私の出版物の最初の部分は 、多くの建設的なコメントを受け取り、問題をより詳細に理解するきっかけになりました。







録音に関するコメントが促され、さらに実験を行った結果、転送するデータの構造とデータの種類の両方によって、検討している機能の速度が大きく異なることがわかりました。



変更を行ったテストのソースコードは、最初の部分に比べてわずかに改訂されていますが、基本は同じままです: http : //pastie.org/242453



それでは、最も単純なものを見てみましょう-データのネスティングの増加が速度に与える影響:







データ配列の各要素は次のとおりです。



:

array ('1234667890', '1234667890', '1234667890', '1234667890', '1234667890');

:

array (array ('1234667890'), array ('1234667890'), array ('1234667890'), array ('1234667890'), array ('1234667890'));

:

array (array (array ('1234667890')),array (array ('1234667890')),array (array ('1234667890')),array (array ('1234667890')),array (array ('1234667890')));








結論1.パッケージのネストが増えると、jsonはシリアル化よりも数倍速くなりますが、逆の操作はほぼ同じ速度で実行されます。



次に、整数と小数(グラフ上の列の最初の8つのグループ、ラベル「int」と「f」)を検討します。





0から100(1)、1000から10000(2)、100,000から1 000 000(3)、1 000 000から10000 000(4)の乱数が配列のデータとして機能しました。 最初の4列には整数が、2番目の4列には小数が使用されました。



結論2.整数では、jsonはパックするときに少し速くなり、アンパックするときに少し遅くなります。



結論3.小数の場合、jsonはパッキング時に数倍速く、アンパック時に少し遅くなります。



最も興味深いのは、列の最後の8つのグループです。 そこでは、5、20、50、100個のラテン文字(l)とUTF-8のキリル文字(k)のランダムシーケンスがデータ配列の要素として機能します。



結論4.長いラテン文字列では、jsonは数倍遅くなります。



結論5. UTF-8文字では、jsonは数倍高速です。



エピローグでは、これらすべての研究が実際的な価値よりも理論的な価値をもたらしたと言いたいと思います。それぞれの場合にデータ型が混在し、データに特化したテストが必要になります。 加えて、私たちはそのような微視的な利益について本当に話しているが、その利点は非常に大量のデータでしか見られない。



PS:この物語の最初は私の個人的なブログで公開されました。その後、ほんの数分で、PHPブログに入るのに十分なポイントを獲得しました。 その後、私にとって完全に理解できない方法で、私は最初のページに到達しました。



All Articles