This repository has been archived on 2023-03-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
osr-discourse-src/lib
Alan Guo Xiang Tan 24db6fbb73 PERF: Memoize topic level checks in PostGuardian (#19647)
When loading posts in a topic, the topic level guardian
checks are run multiple times even though all the posts belong to the
same topic. Profiling in production revealed that this accounted for a
significant amount of request time for a user that is not staff or anon.
Therefore, we're optimizing this by adding memoizing the topic level
calls in `PostGuardian`. Speficifally, the result of
`TopicGuardian#can_see_topic?` and `PostGuardian#can_create_post?`
method calls are memoized per topic.

Locally profiling shows a significant improvement for normal users
loading a topic with 100 posts.

Benchmark script command: `ruby script/bench.rb --unicorn --skip-bundle-assets --iterations 100`

Before:

```
topic user:
  50: 114
  75: 117
  90: 122
  99: 209
topic.json user:
  50: 67
  75: 69
  90: 72
  99: 162
```

After:

```
topic user:
  50: 101
  75: 104
  90: 107
  99: 184
topic.json user:
  50: 53
  75: 53
  90: 56
  99: 138
```
2023-01-03 09:00:42 +08:00
..
2022-04-28 11:51:03 +02:00
2022-04-28 11:51:03 +02:00
2022-04-28 11:51:03 +02:00
2022-04-28 11:51:03 +02:00
2021-10-27 11:39:28 +03:00
2022-04-28 11:51:03 +02:00
2022-04-28 11:51:03 +02:00
2022-03-03 09:24:58 +08:00
2022-04-06 17:10:51 +02:00
2022-04-28 11:51:03 +02:00
2022-04-28 11:51:03 +02:00
2022-04-28 11:51:03 +02:00
2021-06-21 11:06:58 +08:00
2020-07-21 15:55:03 +08:00