My experience using the lib. Inputs for performance improvement
First of all, Thanks for this amazing library.
I am using this library and would like to share experience that will give you data when you refactor code to improve performance
- When
$openapiobject is initialised by reading spec file it is taking significant time that can be reduced ($openapi = Reader::readFromJsonFile(realpath('openapi_spec.json'));) - When I
print_ra Schema object (cebe\openapi\spec\Schema) it takes a lot of time, browser crashes sometimes. (Workaround print_r property directlyecho $schema->title) - Above issue also occurs when I try to print other object such as MediaType
- php.ini:
max_execution_time&memory_limitare needed to increase. If possible, changes can be made to be within limit of PHP defaults
Note: I have not done concrete profiling. This are just my primary observation while using the lib
I will share further experiences when I go come across any
When $openapi object is initialised by reading spec file it is taking significant time that can be reduced ($openapi = Reader::readFromJsonFile(realpath('openapi_spec.json'));)
I think result shoud be cached. Two ways:
- Cache in user space (need example in library documentation)
- Cache as vendor feature - need CachebleReader implementation
- PSR-6 integration support - accept user defined implementation injection
Last approach is best practice.
Currently, I'm use parsing for build app routing powered by spec with FastRoute (https://github.com/FreeElephants/json-api-php-toolkit/blob/be6041c5f6fd586e19d3bf1ba3b3b4030e260c11/src/FreeElephants/JsonApiToolkit/Routing/FastRoute/CacheableDispatcherFactoryProxy.php for example).