gitlab-org--gitlab-foss/app/models
Yorick Peterse 77c8520e2e
Added concern for a faster "cache_key" method
This concern provides an optimized/simplified version of the "cache_key"
method. This method is about 9 times faster than the default "cache_key"
method.

The produced cache keys _are_ different from the previous ones but this
is worth the performance improvement. To showcase this I set up a
benchmark (using benchmark-ips) that compares FasterCacheKeys#cache_key
with the regular cache_key. The output of this benchmark was:

    Calculating -------------------------------------
               cache_key     4.825k i/100ms
          cache_key_fast    21.723k i/100ms
    -------------------------------------------------
               cache_key     59.422k (± 7.2%) i/s -    299.150k
          cache_key_fast    543.243k (± 9.2%) i/s -      2.694M

    Comparison:
          cache_key_fast:   543243.4 i/s
               cache_key:    59422.0 i/s - 9.14x slower

To see the impact on real code I applied these changes and benchmarked
Issue#referenced_merge_requests. For an issue referencing 10 merge
requests these changes shaved off between 40 and 60 milliseconds.
2016-08-08 16:49:22 +02:00
..
ci Check for Ci::Build artifacts at database level 2016-07-29 14:08:41 +02:00
concerns Added concern for a faster "cache_key" method 2016-08-08 16:49:22 +02:00
hooks Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
members Fix Rename add_users_into_project and projects_ids 2016-08-04 08:55:50 -03:00
network Enable Style/SpaceAfterComma Rubocop cop 2016-06-29 15:23:44 +02:00
project_services Move color-logic into HipchatService#HipchatService 2016-07-27 11:29:05 +02:00
protected_branch Implement final review comments from @rymai. 2016-07-29 15:20:39 +05:30
.gitkeep
ability.rb Move abilities by subject class to a dedicated method 2016-08-04 16:00:31 +02:00
abuse_report.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
appearance.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
application_setting.rb Default to manual input for domain_whitelist, syntax fixes and added new tests. 2016-07-18 17:53:43 -05:00
audit_event.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
award_emoji.rb Add emoji.rb in lib/gitlab instead of using the gitlab_emoji gem. 2016-06-29 14:53:09 -06:00
blob.rb Ensure relative paths for video are rewritten as we do for images 2016-07-26 10:22:17 +02:00
broadcast_message.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
commit.rb Speed up Commit#repo_changes 2016-08-03 19:23:44 +02:00
commit_range.rb Fix comment for project argument in commit_range.rb 2016-06-20 11:12:04 -07:00
commit_status.rb Workaround MySQL with INNER JOIN: 2016-07-21 01:10:08 +08:00
compare.rb Make Compare#diffs diff_options a regular argument 2016-08-03 09:32:01 -07:00
deploy_key.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
deploy_keys_project.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
deployment.rb Improve manual actions code and add model, service and feature tests 2016-07-18 14:46:20 +02:00
diff_note.rb Speedup DiffNote#active? on discussions, preloading noteables and avoid touching git repository to return diff_refs when possible 2016-08-02 16:04:15 +02:00
discussion.rb Speedup DiffNote#active? on discussions, preloading noteables and avoid touching git repository to return diff_refs when possible 2016-08-02 16:04:15 +02:00
email.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
environment.rb Incorporate feedback 2016-07-29 13:54:45 +02:00
event.rb Use a more future-proof check for Note/LegacyDiffNote 2016-07-06 10:08:42 +02:00
external_issue.rb
forked_project_link.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
generic_commit_status.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
global_label.rb
global_milestone.rb
group.rb Dumb-down avatar presence check in avatar_url methods 2016-07-05 10:51:11 -04:00
identity.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
issue.rb Added concern for a faster "cache_key" method 2016-08-08 16:49:22 +02:00
key.rb Add simple identifier to public SSH keys 2016-08-02 06:56:23 +01:00
label.rb Simplify regex for string-based multi-word label surrounded in quotes 2016-07-13 16:01:27 -03:00
label_link.rb squashed - fixed label and milestone association problems, updated specs and refactored reader class a bit 2016-08-01 09:57:40 +02:00
legacy_diff_note.rb switch from diff_file_collection to diffs 2016-08-03 07:00:20 +02:00
lfs_object.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
lfs_objects_project.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
member.rb Incorporate review comments 2016-07-26 16:53:39 -07:00
merge_request.rb change the API on the merge_request_diff model from diffs -> raw_diffs 2016-08-03 23:32:12 +02:00
merge_request_diff.rb change the API on the merge_request_diff model from diffs -> raw_diffs 2016-08-03 23:32:12 +02:00
milestone.rb use has_many relationship with events 2016-07-01 15:34:10 +02:00
namespace.rb Refactor repository paths handling to allow multiple git mount points 2016-06-29 22:30:31 -04:00
note.rb Added concern for a faster "cache_key" method 2016-08-08 16:49:22 +02:00
notification_setting.rb Exclude projects pending delete from notifications 2016-07-07 20:49:17 +01:00
oauth_access_token.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
personal_access_token.rb
personal_snippet.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
project.rb using shared path for project import uploads and refactored gitlab remove export worker 2016-08-04 12:51:55 +02:00
project_group_link.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
project_import_data.rb add missing attribute to attr_encrypted so it is fully backwards-compatible 2016-06-28 09:55:19 +02:00
project_snippet.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
project_team.rb Fix Rename add_users_into_project and projects_ids 2016-08-04 08:55:50 -03:00
project_wiki.rb Refactor repository paths handling to allow multiple git mount points 2016-06-29 22:30:31 -04:00
protected_branch.rb Use Gitlab::Access to protected branch access levels. 2016-07-29 15:20:39 +05:30
release.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
repository.rb Use only deltas in diffs when scanning the last commit for changes in the avatar to save memory 2016-08-03 19:24:28 +02:00
security_event.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
sent_notification.rb Allow SentNotification#position to be set as string or hash 2016-07-11 12:21:05 -05:00
service.rb Make Service.external_wikis return only active external wikis 2016-07-21 10:36:02 +02:00
snippet.rb Merge branch 'feature/custom-highlighting' into 'master' 2016-06-28 08:42:42 +00:00
spam_log.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
spam_report.rb
subscription.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
todo.rb Add approval required todos 2016-07-12 19:01:09 +01:00
tree.rb
u2f_registration.rb Add a U2fRegistrations table/model. 2016-06-06 12:50:31 +05:30
user.rb Merge branch '18586-user-authorized_projects-is-slow' into 'master' 2016-07-20 20:35:11 +00:00
users_star_project.rb Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
wiki_page.rb WikiPage should have a slug even when not persisted. 2016-07-25 09:22:47 +05:30