mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
MDL-58160 coursecat: Use set_many to populate category cache
When the course category cache needs to be repopulated, two entries are added to the cache for each category. In core this is currently done in a for-loop, resulting in N set calls to the cache (where N is twice the number of categories in Moodle). This change switches that code to using a single set_many cache call instead, which makes this an O(1) operation instead of O(N). For a site with say, 1000 categories, this results in only 1 set call to the cachestore instead of 2000.
This commit is contained in:
parent
3c45d26f58
commit
b3e4fbc011
1 changed files with 1 additions and 3 deletions
|
@ -626,9 +626,7 @@ class coursecat implements renderable, cacheable_object, IteratorAggregate {
|
||||||
}
|
}
|
||||||
// We must add countall to all in case it was the requested ID.
|
// We must add countall to all in case it was the requested ID.
|
||||||
$all['countall'] = $count;
|
$all['countall'] = $count;
|
||||||
foreach ($all as $key => $children) {
|
$coursecattreecache->set_many($all);
|
||||||
$coursecattreecache->set($key, $children);
|
|
||||||
}
|
|
||||||
if (array_key_exists($id, $all)) {
|
if (array_key_exists($id, $all)) {
|
||||||
return $all[$id];
|
return $all[$id];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue