simdjson-php <strong>环境依赖</strong><strong>使用简介</strong><strong>性能对比秒</strong><img alt="" src="/static/assets/osapp/images/0b2ba4f5cd06a450ed34638ea59057 介绍
介绍 :
simdjson_PHP是一个PHP扩展,它绑定simdjson来实现快速解析,simdjson是一个高速的json解析器,它使用了大多数SIMD单一指令。simdjson介绍:https://github.com/lemire/simdjson
环境依赖
-
PHP7+
-
带有AVX2的处理器(即,2013年发布的Haswell微体系结构的Intel处理器和2017年发布的Zen微体系结构的AMD处理器)
- 最近的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
使用简介
1. 当需要获取一个较大json串中的某个key时 使用simdjson_key_value() 是比较合适的,不像json_decode()
把整个json串解析成数组,开辟不必要的内存。
2. 当验证一个字符串是否为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"}] } } */ //注意. "\t" 是一个分割符. 它必须是一个控制字符. 它用来分割对象的key或数组的下标 //例如. "Image\tThumbnail\tUrl" 是正确. 'Image\tThumbnail\tUrl' 是错误的 //根据json串获取指定key的值 $value = simdjson_key_value($jsonString, "Image\tThumbnail\tUrl"); var_dump($value); // string(38) "http://www.example.com/image/481989943" $value = simdjson_key_value($jsonString, "Image\tIDs\t4", true); var_dump($value); /* array(1) { ["p"]=> string(2) "30" } */ //获取json解析后的资源,只解析一次,后续使用不再解析 $resource = simdjson_resource($jsonString); //根据json资源获取指定key的值 $value = simdjson_key_value($resource, "Image\tThumbnail\tUrl"); var_dump($value); // string(38) "http://www.example.com/image/481989943" $value = simdjson_key_value($resource, "Image\tIDs\t4", true); var_dump($value); /* array(1) { ["p"]=> string(2) "30" } */ //检查key是否存在,参数可以是一个json串也可以是一个json资源,返回true,false,null。当第一个参数是字符串时返回null代表解析失败 $res = simdjson_key_exists($jsonString, "Image\tIDs\t1"); var_dump($res) //bool(true) $res = simdjson_key_exists($resource, "Image\tIDs\t1"); var_dump($res) //bool(true)
性能对比(秒)
测试脚本:
simdjson-php <strong>环境依赖</strong><strong>使用简介</strong><strong>性能对比秒</strong><img alt="" src="/static/assets/osapp/images/0b2ba4f5cd06a450ed34638ea59057 官网
https://gitee.com/crazyxman/simdjson_php
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。