cebe / php-openapi

Read and write OpenAPI yaml/json files and make the content accessible in PHP objects.
MIT License
469 stars 89 forks source link

My experience using the lib. Inputs for performance improvement #105

Open SOHELAHMED7 opened 3 years ago

SOHELAHMED7 commented 3 years ago

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

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

samizdam commented 3 years ago

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:

  1. Cache in user space (need example in library documentation)
  2. Cache as vendor feature - need CachebleReader implementation
  3. 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).