如何使用Rust提高Ruby性能
来源:互联网 发布:没卡怎么在淘宝买东西 编辑:程序博客网 时间:2024/06/06 12:27
摘要:Ruby是一种简单快捷面向对象的脚本语言,而Rust是一种系统编程语言,它有着惊人的运行速度,能够防止段错误,并保证线程安全。本文作者以项目为例,结合大量的编程代码描述了如何借助Rust语言提高Ruby的性能,以下是译文。
几年前,在我的Rails(提供一个纯Ruby的开发环境)应用程序里发现了一些被调用数千次的方法,占了网站页面加载时间的30%以上。这些方法都完全地专注于文件路径名。
除此之外,我还看过一篇博客写“拯救Ruby的Rust”,这表明可以用Rust编写执行慢的Ruby代码,让Ruby变得更快。Rust还提供了一种安全、快速、高效的编写代码的方法。在用Rust语言重写了我的Rails站点上一些效率较低的方法之后,网站页面加载速度比以前快了33%以上。
如果想了解通过FFI集成Rust,那么建议看看上文中提到的那篇博客(“拯救Ruby的Rust”)。当前这篇文章的重点是分享我在过去两年整合Ruby和Rust所得到的经验教训。当方法被调用数千次,它的性能稍有改进都会对项目有很大的影响。
入门
这篇文章的相关代码可以在GitHub上看到,如果打算开始了解Rust和Ruby项目,可以创建一个ffi_example
项目,并把下面的代码添加到Cargo.toml
文件:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
添加如下代码到ffi_example.gemspec
文件:
- 1
- 2
- 3
- 4
- 5
- 6
由于构建的库需要在客户端系统上使用FFI,所以最好将FFI,Rake和Bundler作为常规依赖项包含在内。
用于这篇文章的例子,可以从FasterPath的repo历史记录中获取basename
方法代码,与File.basename
进行比较。
- 1
- 2
- 3
- 4
为了简单起见,将所有的Rust代码放入到src/lib.rs
。这是一个用Rust编写的basename代码副本(可以复制和粘贴它;在这里不再介绍它是如何工作的):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
这个案例是为了模仿File.basename
返回结果的方式而写的。这里唯一需要注意的是在basename
方法开始的地方的边界情况。这有效地使方法在迭代给定输入的时间加倍,并且应该重构到现有的系统中去。
感谢Gleb Mazovetskiy,extract_last_path_segment
是一个有效的贡献。这个方法在其它方法中使用,并在边界情况已知之前就实现了。在本文的后面,将讨论有和没有边界情况下的基准性能的细节。
宁波整形医院www.lyxcl.org
- 如何使用Rust提高Ruby性能
- 如何使用Rust提高Ruby性能
- 如何使用Rust提高Ruby性能
- 如何使用Rust提高Ruby性能
- 如何使用Rust提高Ruby性能
- 如何提高 Ruby On Rails 性能
- 如何使用YSLOW提高网站性能
- 如何提高MySQL性能
- 如何提高电脑性能
- 如何提高struts2性能
- 如何提高MySQL性能
- 如何提高MySQL性能
- 如何提高应用程序性能?
- 如何提高数据库性能
- 如何提高数据库性能 .
- 如何提高SQL2000性能
- 如何提高应用程序性能
- 如何提高DataGridView性能?
- itop4412 uboot 学习详细记录(二丶Exynos4412 uboot的组成)
- Codeforces Round #449 (Div. 2) D(思维)
- 【安全牛学习笔记】OWASP_ZAP
- springmvc下的Token设计
- 前端移动端适配方法
- 如何使用Rust提高Ruby性能
- IDA 使用技巧
- POST请求慎用301 Moved Permanently
- 2017主要服务产品体系
- jquery event.target 事件委托
- 使用USRP e300系列网络模式的一般流程
- hadoop 源码编译2.7.4
- hdu1404 Digital Deletions (状压+dfs)
- 简易付橙色酷炫安装版V20171203更新包下载 | 银盒子简易付