Homec4science

Provide a cached class map query for making key-based class lookups more…

Authored by epriestley <git@epriestley.com> on Dec 6 2016, 12:50.

Description

Provide a cached class map query for making key-based class lookups more efficient

Summary:
Ref T11954. Depends on D16993. We have a couple of "look up the class for this key" queries which are costly enough to show up on a profile.

These aren't huge wins, but they're pretty easy. We currently do this like this:

$class_map = load_every_subclass();
return idx($class_map, $key);

However, we don't need to load EVERY subclass if we're only looking for, say, the Conduit method subclass which implements user.whoami. This allows us to cache that map and find the right class efficiently.

This cache is self-validating and completely safe even in development.

Test Plan:

  • Used curl to make queries to user.whoami, verified that content was identical before and after the change.
  • Used ab -n100 to roughly measure 99th percentile time, which dropped from 74ms to 65ms. This is a small improvement (13% in the best case, here) but it benefits every Conduit method call.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T11954

Differential Revision: https://secure.phabricator.com/D16994

Details

Committed
epriestley <git@epriestley.com>Dec 6 2016, 17:34
Pushed
aubortJan 31 2017, 17:16
Parents
rPH52112620a3d2: Provide a pure APC cache for runtime caching
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPH1f3fcce6fe2d: Provide a cached class map query for making key-based class lookups more… (authored by epriestley <git@epriestley.com>).Dec 6 2016, 17:34