-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Big JSON serialization benchmark for PHP 8.0.0
- Loading branch information
0 parents
commit 13e2b37
Showing
14 changed files
with
293 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
version: '2.1' | ||
|
||
jobs: | ||
ValidateBenchmark: | ||
docker: | ||
- image: phpbenchmarks/benchmark-kit:4 | ||
working_directory: /var/www/benchmark | ||
steps: | ||
- checkout | ||
- run: | ||
name: entrypoint | ||
command: entrypoint --nginx-as-service | ||
- run: | ||
name: "validate:benchmark" | ||
command: "phpbenchkit validate:benchmark -vvv" | ||
|
||
workflows: | ||
version: '2.1' | ||
BenchmarkKit: | ||
jobs: | ||
- ValidateBenchmark |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
/vendor | ||
/composer.lock |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
component: | ||
slug: php | ||
benchmark: | ||
type: json-serialization-big-overload | ||
relativeUrl: / | ||
sourceCode: | ||
entryPoint: public/index.php | ||
urls: | ||
jsonSerialization: 'https://github.com/phpbenchmarks/php/tree/8.0.0_json-serialization-big-overload_0/public/index.php#L15' | ||
integerSerialization: 'https://github.com/phpbenchmarks/php/tree/8.0.0_json-serialization-big-overload_0/public/index.php#L15' | ||
floatSerialization: 'https://github.com/phpbenchmarks/php/tree/8.0.0_json-serialization-big-overload_0/public/index.php#L15' | ||
stringSerialization: 'https://github.com/phpbenchmarks/php/tree/8.0.0_json-serialization-big-overload_0/public/index.php#L15' | ||
booleanSerialization: 'https://github.com/phpbenchmarks/php/tree/8.0.0_json-serialization-big-overload_0/public/index.php#L15' | ||
nullSerialization: 'https://github.com/phpbenchmarks/php/tree/8.0.0_json-serialization-big-overload_0/public/index.php#L15' | ||
arraySerialization: 'https://github.com/phpbenchmarks/php/tree/8.0.0_json-serialization-big-overload_0/public/index.php#L15' | ||
objectSerialization: 'https://github.com/phpbenchmarks/php/tree/8.0.0_json-serialization-big-overload_0/public/index.php#L15' | ||
coreDependency: | ||
name: php | ||
version: 8.0.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
server { | ||
listen ____PORT____; | ||
server_name ____HOST____; | ||
root ____INSTALLATION_PATH____/____ENTRY_POINT_FILE_PATH____; | ||
location / { | ||
try_files $uri /____ENTRY_POINT_FILE_NAME____$is_args$args; | ||
} | ||
location ~ ____ENTRY_POINT_FILE_NAME____(/|$) { | ||
fastcgi_pass unix:/run/php/____PHP_FPM_SOCK____; | ||
fastcgi_split_path_info ^(.+.php)(/.*)$; | ||
include fastcgi_params; | ||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
fastcgi_param HTTPS off; | ||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -e | ||
|
||
# add commands to initialize benchmark: clear cache and logs, warm up cache etc | ||
composer install --no-dev --classmap-authoritative --ansi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
; ---------------------------------------------------------------------------------------------------------------------- | ||
; This file will be added to PHP ini files loaded before benchmarking. | ||
; Configure what you need here. | ||
; | ||
; /!\ Do NOT configure opcache.enable: it will be configured automatically. | ||
; /!\ Do NOT configure opcache.preload and opcache.preload_user: it will be configured automatically. /!\ | ||
; ---------------------------------------------------------------------------------------------------------------------- | ||
|
||
; Examples of configuration you could change for your needs. | ||
|
||
; The maximum number of keys (scripts) in the OPcache hash table. | ||
; Only numbers between 200 and 1000000 are allowed. | ||
;opcache.max_accelerated_files=10000 | ||
|
||
; If disabled, all PHPDoc comments are dropped from the code to reduce the | ||
; size of the optimized code. | ||
;opcache.save_comments=1 | ||
|
||
; A bitmask, where each bit enables or disables the appropriate OPcache | ||
; passes | ||
;opcache.optimization_level=0x7FFFBFFF | ||
|
||
; Allows exclusion of large files from being cached. By default all files | ||
; are cached. | ||
;opcache.max_file_size=0 | ||
|
||
; Enables or disables opcode caching in shared memory. | ||
;opcache.file_cache_only=0 | ||
|
||
; The OPcache shared memory storage size. | ||
;opcache.memory_consumption=128 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<?php | ||
|
||
$sourceCodePath = __DIR__ . '/../../../'; | ||
$files = [ | ||
"$sourceCodePath/public/index.php", | ||
"$sourceCodePath/src/ObjectToSerialize/JsonSerializableToSerialize.php", | ||
"$sourceCodePath/src/ObjectToSerializeFactory/JsonSerializableFactory.php", | ||
"$sourceCodePath/vendor/autoload.php", | ||
"$sourceCodePath/vendor/composer/ClassLoader.php", | ||
"$sourceCodePath/vendor/phpbenchmarks/benchmark-json-serialization-big-overload/src/BenchmarkService.php", | ||
"$sourceCodePath/vendor/phpbenchmarks/benchmark-json-serialization-big-overload/src/ObjectToSerialize/ObjectToSerialize.php", | ||
"$sourceCodePath/vendor/phpbenchmarks/benchmark-json-serialization-big-overload/src/ObjectToSerialize/ObjectToSerializeInterface.php", | ||
"$sourceCodePath/vendor/phpbenchmarks/benchmark-json-serialization-big-overload/src/ObjectToSerializeFactory/ObjectToSerializeFactoryInterface.php", | ||
]; | ||
|
||
foreach ($files as $file) { | ||
if (is_readable($file) === false) { | ||
throw new \Exception('File "' . $file . '" is not readable.'); | ||
} | ||
|
||
opcache_compile_file($file); | ||
} |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
<p align="center"> | ||
<img src="http://www.phpbenchmarks.com/images/logo_github.png"> | ||
<br> | ||
<a href="http://www.phpbenchmarks.com" target="_blank">www.phpbenchmarks.com</a> | ||
</p> | ||
|
||
## What is www.phpbenchmarks.com? | ||
|
||
You will find a lot of benchmarks for PHP and PHP libraries on [phpbenchmarks.com](http://www.phpbenchmarks.com). | ||
|
||
Benchmarks results are available from PHP 5.6 to latest version. | ||
|
||
Our benchmarking protocol is available on [benchmarking protocol page](http://www.phpbenchmarks.com/en/documentation/benchmarking-protocol). | ||
|
||
## What is this repository? | ||
|
||
It contains PHP benchmark code. | ||
|
||
Switch branch to select version and benchmark you want to see. | ||
|
||
## Benchmarks | ||
|
||
You can find PHP 8.0 benchmarks results on | ||
[benchmarks results page](http://www.phpbenchmarks.com/en/benchmark/php/8.0). | ||
|
||
See all PHP benchmarked versions on [select version page](http://www.phpbenchmarks.com/en/benchmark/php/version). | ||
|
||
## Community | ||
|
||
Go to [community page](http://www.phpbenchmarks.com/en/community) to see the Hall of fame, or download the benchmark kit to add your code! | ||
|
||
## How version works? | ||
|
||
We do not follow semantic version for this repository. | ||
|
||
Here is an explanation about our versioning system: | ||
|
||
`X.Y.Z_benchmark-slug_W` | ||
|
||
* `X`: PHP major version. | ||
* `Y`: PHP minor version. | ||
* `Z`: PHP patch version. | ||
* `benchmark-slug`: slug of the benchmark, list available on [documentation page](http://www.phpbenchmarks.com/en/documentation). | ||
* `W`: benchmark version |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
{ | ||
"name": "phpbenchmarks/php", | ||
"license": "proprietary", | ||
"type": "project", | ||
"require": { | ||
"php": "8.0.0", | ||
"ext-json": "*", | ||
"phpbenchmarks/benchmark-json-serialization-big-overload": "1.0.0" | ||
}, | ||
"autoload": { | ||
"psr-4": { | ||
"App\\": "src/" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
use App\ObjectToSerializeFactory\JsonSerializableFactory; | ||
use PhpBenchmarks\BenchmarkJsonSerializationBigOverload\BenchmarkService; | ||
|
||
require __DIR__ . '/../vendor/autoload.php'; | ||
|
||
$benchmarkService = new BenchmarkService(new JsonSerializableFactory()); | ||
|
||
if ($benchmarkService->isWriteToResponseBody()) { | ||
echo json_encode($benchmarkService->getDataToSerialize()); | ||
} else { | ||
json_encode($benchmarkService->getDataToSerialize()); | ||
} | ||
|
||
// require phpbenchmarks stats.php here when needed |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace App\ObjectToSerialize; | ||
|
||
use PhpBenchmarks\BenchmarkJsonSerializationBigOverload\ObjectToSerialize\ObjectToSerialize; | ||
|
||
class JsonSerializableToSerialize extends ObjectToSerialize implements \JsonSerializable | ||
{ | ||
/** @return array */ | ||
public function jsonSerialize() | ||
{ | ||
return [ | ||
'property1' => $this->getProperty1(), | ||
'property2' => $this->getProperty2(), | ||
'property3' => $this->getProperty3(), | ||
'property4' => $this->getProperty4(), | ||
'property5' => $this->getProperty5(), | ||
'property6' => $this->getProperty6(), | ||
'property7' => $this->getProperty7(), | ||
'property8' => $this->getProperty8(), | ||
'property9' => $this->getProperty9(), | ||
'property10' => $this->getProperty10() | ||
]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace App\ObjectToSerializeFactory; | ||
|
||
use App\ObjectToSerialize\JsonSerializableToSerialize; | ||
use PhpBenchmarks\BenchmarkJsonSerializationBigOverload\{ | ||
ObjectToSerialize\ObjectToSerializeInterface, | ||
ObjectToSerializeFactory\ObjectToSerializeFactoryInterface | ||
}; | ||
|
||
class JsonSerializableFactory implements ObjectToSerializeFactoryInterface | ||
{ | ||
/** @return ObjectToSerializeInterface */ | ||
public function create() | ||
{ | ||
return new JsonSerializableToSerialize(); | ||
} | ||
} |