国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

simdjson_php 高速解析json

shadajin / 1705人閱讀

摘要:介紹,它綁定來實現快速解析,是一個高速的解析器,它使用了大多數單一指令。介紹環境依賴帶有的處理器即,年發布的微體系結構的處理器和年發布的微體系結構的處理器,大多數都是支持的最近的編譯器例如,或或,我們假設。

介紹

simdjson_php(https://github.com/crazyxman/...,它綁定simdjson來實現快速解析,simdjson是一個高速的json解析器,它使用了大多數SIMD單一指令。simdjson介紹:https://github.com/lemire/sim...

環境依賴

php7+

帶有AVX2的處理器(即,2013年發布的Haswell微體系結構的Intel處理器和2017年發布的Zen微體系結構的AMD處理器),大多數cpu都是支持的

最近的C ++編譯器(例如,GNU GCC或LLVM CLANG或Visual Studio 2017),我們假設C ++ 17。GNU GCC 7或更高版本或LLVM的clang 6或更高版本

檢查操作系統/處理器是否支持它:

OS X: sysctl -a | grep machdep.cpu.leaf7_features

Linux: grep avx2 /proc/cpuinfo

使用簡介

當需要獲取一個較大json串中的某個key時 使用simdjson_key_value() 是比較合適的,不像json_decode() 把整個json串解析成數組,開辟不必要的內存,當然在性能上是略遜于hash查找的。

當驗證一個字符串是否為json時simdjson_isvaild() 是比較合適的,并且是非常快的,同樣不需要通過json_decode()來驗證。

//檢查字符串是否為一個有效的json:
$isValid = simdjson_isvalid($jsonString); //return bool

//解析一個json字符串,返回數組,對象,null,類似json_decode(),第三個參數為解析的深度
$parsedJSON = simdjson_decode($jsonString, true, 512); //return array|object|null. "null" string is not a standard json

/*
{
  "Image": {
    "Width":  800,
    "Height": 600,
    "Title":  "View from 15th Floor",
    "Thumbnail": {
      "Url":    "http://www.example.com/image/481989943",
      "Height": 125,
      "Width":  100
    },
    "Animated" : false,
    "IDs": [116, 943, 234, 38793, {"p": "30"}]
  }
}
*/

//注意. "	" 是一個分割符. 它必須是一個控制字符. 它用來分割對象的key或數組的下標
//例如. "Image	Thumbnail	Url" 是正確. "Image	Thumbnail	Url" 是錯誤的


//根據json串獲取指定key的值
$value = simdjson_key_value($jsonString, "Image	Thumbnail	Url");
var_dump($value); // string(38) "http://www.example.com/image/481989943"

$value = simdjson_key_value($jsonString, "Image	IDs	4", true);
var_dump($value); 
/*
array(1) {
  ["p"]=>
  string(2) "30"
}
*/

//獲取json解析后的資源,只解析一次,后續使用不再解析
$resource = simdjson_resource($jsonString);
//根據json資源獲取指定key的值
$value = simdjson_key_value($resource, "Image	Thumbnail	Url");
var_dump($value); // string(38) "http://www.example.com/image/481989943"

$value = simdjson_key_value($resource, "Image	IDs	4", true);
var_dump($value); 
/*
array(1) {
  ["p"]=>
  string(2) "30"
}
*/

//檢查key是否存在,參數可以是一個json串也可以是一個json資源,返回true,false,null。當第一個參數是字符串時返回null代表解析失敗
$res = simdjson_key_exists($jsonString, "Image	IDs	1");
var_dump($res) //bool(true)
$res = simdjson_key_exists($resource, "Image	IDs	1");
var_dump($res) //bool(true)
性能測試(秒)
filename json_decode simdjson_decode simdjson_isvalid
apache_builds.json 0.00307300 0.00225200 0.00018100
canada.json 0.13955000 0.02773900 0.00358300
citm_catalog.json 0.03030900 0.01334000 0.00117000
github_events.json 0.00294100 0.00090400 0.00008500
gsoc-2018.json 0.04292500 0.01112000 0.00186700
instruments.json 0.00509700 0.00231800 0.00017500
marine_ik.json 0.09833600 0.04417500 0.00463400
mesh.json 0.01869200 0.00722600 0.00114800
mesh.pretty.json 0.03576200 0.00738100 0.00163400
numbers.json 0.00263600 0.00069900 0.00018200
random.json 0.01713500 0.00973900 0.00063000
twitter.json 0.01258600 0.00618400 0.00057400
twitterescaped.json 0.01435900 0.00650400 0.00074300
update-center.json 0.01506000 0.00869100 0.00047800

You may run the benchmarks by running the commands:

php benchmark/benchmark.php

如有不足之處下方留言即可,歡迎大家批評指正,我會虛心接納。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31707.html

相關文章

  • 簡述CDN 什么是CDN 為什么要用CDN CDN適用場景

    摘要:用戶向緩存服務器發起請求,緩存服務器響應用戶請求,將用戶所需內容傳送到用戶終端。當處理器引用存儲器中的某地址時,高速緩沖存儲器便檢查是否存有該地址。 考慮到對CDN認知程度的各層小伙伴,開頭有必要簡單介紹下CDN原理(高年級同學可以直接跳過): 一、CDN的基本原理和基礎架構 CDN是將源站內容分發至最接近用戶的節點,使用戶可就近取得所需內容,提高用戶訪問的響應速度和成功率。解決因分布...

    番茄西紅柿 評論0 收藏0
  • 簡述CDN 什么是CDN 為什么要用CDN CDN適用場景

    摘要:用戶向緩存服務器發起請求,緩存服務器響應用戶請求,將用戶所需內容傳送到用戶終端。當處理器引用存儲器中的某地址時,高速緩沖存儲器便檢查是否存有該地址。 考慮到對CDN認知程度的各層小伙伴,開頭有必要簡單介紹下CDN原理(高年級同學可以直接跳過): 一、CDN的基本原理和基礎架構 CDN是將源站內容分發至最接近用戶的節點,使用戶可就近取得所需內容,提高用戶訪問的響應速度和成功率。解決因分布...

    didikee 評論0 收藏0
  • CyberPanel免費開源面板-高速LSCache免費SSL證書-可自建DNS和企業郵局

    摘要:是一個基于開發的服務器控制面板,支持高性能緩存,提供免費證書,可以一鍵簽發證書,支持自建服務器,可以一鍵安裝,你可以用它搭建服務器。關于的安裝與使用早在年挖站否就已經分享過了免費服務器面板安裝與使用,這幾年發展越來越好了。CyberPanel是一個基于OpenLiteSpeed開發的服務器控制面板,支持LSCache高性能緩存,提供免費letsencrypt SSL證書,可以一鍵簽發SSL證...

    番茄西紅柿 評論0 收藏2637
  • Weex——關于移動端動態性的思考、實現和未來

    摘要:什么是動態性今天在移動端,尤其是像手機淘寶這樣的中,動態性問題逐漸成為一個比較棘手的問題。在云端實現了天貓前端運營發布系統斑馬的對接,在前端開發實現了主會場的界面模塊和業務邏輯處理,同時在客戶端上對接了手機天貓手機淘寶。 什么是動態性 今天在移動端,尤其是像手機淘寶這樣的 App 中,動態性問題逐漸成為一個比較棘手的問題。所謂動態性,就是把移動應用本身的靈活性、迭代更新的周期和成本優化...

    heartFollower 評論0 收藏0

發表評論

0條評論

shadajin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<