Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Improvement][Perf]: make ClassTypeDefinitions lazy and/or cached #885

Open
dkarlovi opened this issue Sep 19, 2024 · 1 comment
Open

[Improvement][Perf]: make ClassTypeDefinitions lazy and/or cached #885

dkarlovi opened this issue Sep 19, 2024 · 1 comment

Comments

@dkarlovi
Copy link
Contributor

Improvement description

Currently, \Pimcore\Bundle\DataHubBundle\GraphQL\ClassTypeDefinitions::build is creating type instances for all classes on every request

public static function build(Service $graphQlService, $context = [])
{
$db = Db::get();
$listing = $db->fetchAllAssociative('SELECT id, name FROM classes');
foreach ($listing as $class) {
$id = $class['id'];
$name = $class['name'];
$objectType = new PimcoreObjectType($graphQlService, $name, $id, [], $context);
self::$definitions[$name] = $objectType;
}
/**
* @var string $name
* @var PimcoreObjectType $definition
*/
foreach (self::$definitions as $name => $definition) {
$definition->build($context);
}
}

but not all classes will be used. It would make sense to convert this to a lazy loaded version where the instance is only created when get() is called.

This build process is almost 40% of the runtime in trivial GraphQL queries.

Untitled-profile-Blackfire

Copy link

Thanks a lot for reporting the issue. We did not consider the issue as "Pimcore:Priority", "Pimcore:ToDo" or "Pimcore:Backlog", so we're not going to work on that anytime soon. Please create a pull request to fix the issue if this is a bug report. We'll then review it as quickly as possible. If you're interested in contributing a feature, please contact us first here before creating a pull request. We'll then decide whether we'd accept it or not. Thanks for your understanding.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant