Skip to content

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

Open

Description

@SOHELAHMED7

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 $openapi object 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_r a Schema object (cebe\openapi\spec\Schema) it takes a lot of time, browser crashes sometimes. (Workaround print_r property directly echo $schema->title)
  • Above issue also occurs when I try to print other object such as MediaType
  • php.ini: max_execution_time & memory_limit are 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

Activity

  1. added
    enhancementNew feature or request
    needs investigationWork is needed to figure out the root cause of the problem.
    on Mar 23, 2021
  2. added this to the 1.6.0 milestone on Mar 23, 2021
  3. self-assigned this
    on Mar 23, 2021
  4. samizdam commented on May 24, 2021

    @samizdam

    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).

  5. removed this from the 1.6.0 milestone on Oct 13, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestneeds investigationWork is needed to figure out the root cause of the problem.

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions