`

Ruby代码调整性能优化的几个Tip

阅读更多

    数据都是在我的机器上测试所得,我的机器配置:AMD athlon 64 x2 Dual 4000+ 2.11Ghz,1.87G内存。cruby版本是1.8.6,jruby是1.1RC3。操作系统是xp sp2。

1、将繁忙的循环放在内层,比如下面的代码:

a=0 
for i in 0..1000
  for j in 0..10
     a+=(i+j)
  end
end
  

替换成:

for j in 0..10
   for i in 0..1000
    a+=(i+j)
   end
end
 


cruby提升15%左右,而jruby提升30%以上。

2、乘法运算换成幂运算,cruby降低了200%以上,jruby仅降低30%。也就是说幂运算尽量换算成乘法运算。结论:幂运算换成乘法运算,乘法运算换成加法运算,多数情况下都能对性能有所提高,但请以实际测量为准。

3、100*2 替换成 100<<1,jruby提升8左右%,c ruby提升在0到3%左右。结论:乘以2或者除以2操作可以替换成位移操作,这个调整对性能提高有限,可能以降低代码可读性为代价。

4、字符串累积 a+="abc" 替换成 a<<"abc" c ruby提升接近100%,jruby提升97%

5、将case...when...end语句替换成if...elsif...end语句,cruby没有明显变化(甚至有所降低),而 jruby却提高15%左右。同时,jruby的case...when...end语句的效率比cruby快上60%,if...elsif... end语句比cruby快上50%。结论:使用cruby,用case...when语句为好,而jruby则尽量使用if...elsif

6、将case语句中的频率比较高的分支提前,cruby提升15%左右,jruby也是如此。将if...elsif...end语句中的频率 比较高的部分提前,jruby提升比较少,大概在5%左右,而cruby可以达到10%。。结论:尽管频率高的语句提前,可以适当提升性能,但可以看到也 是有限的,分支语句的顺序不能仅仅考虑频率,更应该兼顾逻辑,维持在同一个抽象层次上。

7、任何一次代码调整,请都要测量一下,这些Tip仅仅是我在我的机器环境下的测试结果。这些调整策略对其他语言也大多有效,我是在读了《代码大全2》代码调整一章后做的测试,并应用到我的代码中了。

分享到:
评论
6 楼 Anleb 2012-09-04  
100*2  100<<1 我觉得效果应该差不多,因为整数在ruby中也利用了驻留技术。
5 楼 Jan 2008-04-01  
不错的帖子

ps. <<比+=效率高是因为<<没用创建临时对象
4 楼 dennis_zane 2008-03-28  
zengyinbo 写道
"这些Tip仅仅是我在我的机器环境下的测试结果。"

你是用什么进行测试的呢?

benchmark,没有一起测试,分开测试
3 楼 zengyinbo 2008-03-28  
"这些Tip仅仅是我在我的机器环境下的测试结果。"

你是用什么进行测试的呢?
2 楼 jack 2008-03-27  
少量语句还能够测试,但是大量的代码堆叠一起的时候,就难以分辨了。
1 楼 night_stalker 2008-03-27  
理论上,求整数次(n)幂 用O(log(n))的那个算法快一点...

有些cpu有求幂运算模块,可以达到比较极限的速度。
自己写太累,所以推荐用matlab的动态链接库...

相关推荐

    ruby源代码 ruby源代码 ruby源代码 ruby源代码2

    ruby源代码 ruby源代码 ruby源代码 ruby源代码2

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

    提升Ruby on Rails性能的几个解决方案

    简介 Ruby On Rails 框架自它提出之日...Rails 是一个真正彻底的 MVC(Model-View-Controller) 框架,Rails 清楚地将你的模型的代码与你的控制器的应用逻辑从 View 代码中分离出来。Rails 开发人员很少或者可能从未遇到

    ruby源代码 ruby源代码 ruby源代码 ruby源代码4

    ruby源代码 ruby源代码 ruby源代码 ruby源代码4

    ruby源代码 ruby源代码 ruby源代码 ruby源代码3

    ruby源代码 ruby源代码 ruby源代码 ruby源代码3

    Ruby-性能测试(完整版)

    Ruby性能测试是软件开发过程中一个至关重要的环节,尤其是在使用Ruby这种动态编程语言时。它确保了代码在实际生产环境中的高效运行,避免了资源浪费和潜在的性能瓶颈。本资料包详细介绍了Ruby性能测试的各个方面,...

    ruby源代码 ruby源代码 ruby源代码 ruby源代码5

    Ruby源代码是实现这一语言的底层逻辑和功能的程序,通过阅读和分析Ruby源代码,我们可以深入理解其工作原理,这对于学习和优化Ruby应用程序至关重要。 Ruby的设计哲学是“程序员的生产力优先”,因此它的语法易于...

    Ruby 代码覆盖率工具 Coco.zip

    6. **性能优化**:虽然收集覆盖率数据可能会对测试速度产生影响,但 Coco 在设计时已经尽可能地优化了性能,确保在不影响开发效率的前提下提供准确的覆盖率数据。 在使用 Coco 过程中,开发者通常会遵循以下步骤: ...

    ruby测试代码6

    标题“ruby测试代码6”和描述“ruby测试代码6”暗示了这是一个关于使用Ruby语言进行的测试代码项目,可能涉及到不同的模块或者数据结构。标签“ruby测试代码6”进一步确认了这一主题。从压缩包子文件的文件名称列表...

    如何用Ruby来实现页面性能测试

    通过SciTE(一个源代码编辑器)运行Ruby脚本,可以显著减少资源消耗和脚本执行时间,从而获取更准确的性能数据。此外,作者改进了测试结构,将监控点的控制从纯脚本控制转变为由Excel控制,这样不仅使性能测试的配置...

    rubyPHP高性能的PHP框架

    rubyPHP的高性能体现在以下几个方面: 1.页面缓存。页面缓存指之前加载过的页面以文件方式缓存在服务器中,在一段时间内再次加载相同页面时无需重新执行页面逻辑直接加载静态页面。rubyPHP的页面缓存是自动进行的,...

    Ruby-SkylightRails应用程序的智能分析工具能够可视化请求性能

    3. **代码级别的性能剖析**:Skylight能够显示代码执行的热点,帮助开发者识别哪些方法或代码块是性能瓶颈,从而有针对性地进行优化。 4. **操作指导**:Skylight不仅提供数据,还会给出改善性能的具体建议,例如...

    ruby源代码8

    5. 了解性能优化:通过分析源代码,可以学习如何编写高效的Ruby代码,避免不必要的计算和内存消耗。 总的来说,深入研究Ruby源代码不仅能提升编程技巧,还能帮助你成为一个更全面的开发者,更好地理解和应对各种...

    对优化Ruby on Rails性能的一些办法的探究

    3. **代码优化**:这是提高性能最根本也是最有效的方式。通过对代码进行优化,减少不必要的内存消耗和计算负担,可以显著提升应用的整体性能。 #### 避免内存密集型Rails特性 对于Rails而言,内存管理尤为重要。...

    Ruby-Referral一个命令行工具用于查找过滤和排序Ruby代码的定义和引用

    方法是类或模块中定义的行为,Referral能找出方法的调用位置和实现,这对于理解代码流程和优化性能至关重要。变量在Ruby中分为局部变量、实例变量、类变量和全局变量,Referral能够追踪它们的使用情况,有助于识别...

    Ruby-Rubrowser一个交互式可视化ruby代码依赖图的工具

    在Ruby编程中,理解代码间的依赖关系是优化和维护项目的关键。Rubrowser就是这样一款工具,它能够帮助开发者快速定位和识别代码中的依赖关系,从而提高工作效率。通过图形化的方式,开发者可以清晰地看到各个类和...

    ruby实战书、代码书.rar

    6. **性能优化**:如何通过分析和优化代码来提高Ruby程序的性能,可能是本书的一部分内容。 这两本书结合,不仅能够帮助初学者快速掌握Ruby编程,也能为有经验的开发者提供深入理解语言特性和最佳实践的机会。通过...

    ruby 资源(代码范例)

    在"Ruby Cookbook Source"这个压缩包中,我们可以期待找到一系列的Ruby代码示例,这些示例可能涵盖了各种常见的编程问题和最佳实践。Ruby Cookbook通常会包含解决特定问题的代码片段,帮助开发者更好地理解和应用...

    Ruby on Rails入门经典代码

    本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习Rails的宝贵资源,帮助初学者快速掌握这个强大的框架。 1. **Rails基础知识**: - MVC架构:Rails的核心设计模式,模型负责数据处理,视图负责展示,控制器...

    ruby测试代码1

    "ruby测试代码1"可能指的是一个具体的测试用例或者测试框架的实例,用于验证Ruby程序的功能和性能。Ruby提供了多种测试工具,如MiniTest、RSpec和Cucumber等,它们各自有其特点和适用场景。 MiniTest是Ruby标准库的...

Global site tag (gtag.js) - Google Analytics