【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

Bullet:提升 Rails 性能的子弹

  • 2009-11-12
  • 本文字数:723 字

    阅读完需:约 2 分钟

在前段时间结束的 Kungfu Rails 大会上,黄志敏先生(Richard Huang)带来了一个关于如何通过插件、Gem 的方式为 Rails 项目做贡献的主题。Richard 开发了很多实用性很强的插件和 Gem, Bullet 就是其中之一。

设计 Bullet 插件 /Gem 的目的是通过减少查询的数量帮助开发者提升应用程序的性能。它会在你开发时监视应用程序的查询,并在应该添加 Eager Loading(N+1 查询)时给出提示;在无需使用 Eager Loading 或应该使用计数器缓存时,它同样会给出提示。

Bullet 并不直接提升性能,它只是给出一些提示,指出哪些地方可以得到改善,随后由开发者自行添加:include或者:counter_cache

Bullet 的使用非常方便,以插件或 Gem 方式安装后,经过简单配置即可直接使用(新版本增加了 Growl 支持,对于非 MacOS 用户,可以关闭该功能)。

复制代码
config.after_initialize do
Bullet.enable = true
Bullet.alert = true
Bullet.bullet_logger = true
Bullet.console = true
Bullet.growl = true
Bullet.rails_logger = true
Bullet.disable_browser_cache = true
end

在开发环境下启动服务器,访问页面时,Bullet 会弹出提示,告知可以改进的地方,同时在 Bullet 的日志中也会有相应记录。例如,项目提供的范例中就指出存在 Post 对 Comment 关系的 N+1 查询,开发者可以很快做出修改:

复制代码
The request has unused preload associations as follows:
None
The request has N+1 queries as follows:
model: Post => associations: [comment]

Bullet 最近正受到越来越多的关注,最新一期的 Scaling Rails – On The Edge – Part 1 中第一个就介绍了 Bullet, Ruby5 RailsInSide 也有相关报道,俨然是一枚提升性能的子弹。期待有更多国内开发者能积极贡献自己的力量,为开源社区添砖加瓦。

2009-11-12 23:201988
用户头像

发布了 135 篇内容, 共 58.3 次阅读, 收获喜欢 43 次。

关注

评论

发布
暂无评论
发现更多内容

前端之算法(四)快速排序

Augus

算法 8月日更

Android开发:Android Studio插件GsonFormat根据Json自动生成javabean的方法

三掌柜

8月日更 8月

在线日期计算器

入门小站

工具

JavaScript 中如何比较变量的相等

devpoint

JavaScript ES6 8月日更

架构实战营 毕业设计:设计电商秒杀系统

Ahu

【Dubbo3.0 技术专题】总体技术体系介绍及技术指南(目录)

洛神灬殇

dubbo Dubbo服务 8月日更 Dubbo3

部署MinIO存储服务的四种方式

liuzhen007

8月日更

Seata搭建与分布式事务入门

码农参上

SpringCloud spring cloud alibaba seata 8月日更

MySQL 系列教程之(四)MySQL 中的数据类型

若尘

MySQL 数据库 8月日更

python-类,对象--》多态,封装,继承

加里都好

Python

「让我们一起Golang」让协程自己kill自己

Regan Yue

协程 Go 语言 8月日更

crudapi增删改查接口零代码产品成功案例之商会联盟卡项目

crudapi

Java Vue 零代码 crudapi qusar

架构实战营毕业总结

唐高为

模式包括问题和解决方案

escray

学习 极客时间 如何落地业务建模 8月日更

【自驱型成长】——控制感

LeifChen

压力 控制感 8月日更 自驱型成长

Web框架Gin | Gin 中间件

xcbeyond

Go 语言 gin gin-middleware 8月日更

实战架构训练营总结

贯通

#架构实战营

手撸二叉树之二叉树的堂兄弟节点

HelloWorld杰少

数据结构与算法 8月日更

LeetCode题解:208. 实现 Trie (前缀树),对象,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

梳理会在Scrum中是活动还是事件?——《Scrum指南》重读有感(6)

Bruce Talk

Scrum 敏捷 随笔 Agile

有书香气的七夕节

箭上有毒

8月日更

【设计模式】中介者模式

Andy阿辉

C# 后端 设计模式 8月日更

【Flutter 专题】66 图解基本约束 Box (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

万字文肝Python基础知识

ベ布小禅

8月日更

持久层Mybatis中对于SQL注入的问题,聊聊你的想法?

卢卡多多

SQL优化 8月日更

架构训练营毕业总结

Neil43

架构训练营

QDS04 TensorFlow

耳东@Erdong

tensorflow 8月日更 qds

毕业设计:电商秒杀系统

唐高为

https 与 http 区别

一个大红包

8月日更

配置Flink流式应用(九)

数据与智能

flink Kubernetes YARN

Linux之rcp命令

入门小站

Linux

Bullet:提升Rails性能的子弹_Ruby_丁雪丰_InfoQ精选文章