`
orcl_zhang
  • 浏览: 244538 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Benchmark

    博客分类:
  • ruby
阅读更多
1,length > 0和blank?和emtpy?
>> Benchmark.bm do |x|
?>  x.report{10000.times{[].blank?}}
>>  x.report{10000.times{[].empty?}}
>>  x.report{10000.times{[].length > 0}}
>> end
      user     system      total        real
  0.010000   0.000000   0.010000 (  0.006934)
  0.010000   0.000000   0.010000 (  0.008550)
  0.010000   0.000000   0.010000 (  0.009955)
=> true

2,eval和__send
>> Benchmark.bm do |x|
?>  x.report{10000.times{1+2}}
>>  x.report{10000.times{1.__send__(:+,2)}}
>>  x.report{10000.times{eval("1+2")}}
>> end
      user     system      total        real
  0.010000   0.000000   0.010000 (  0.011300)
  0.000000   0.000000   0.000000 (  0.013654)
  0.020000   0.000000   0.020000 (  0.014717)
=> true

养成良好的小习惯吧,如果在大数组里出现这些代码,速度还是有一点点的影响的。
分享到:
评论
6 楼 orcl_zhang 2010-06-30  
不明白,原来的代码为什么要这样些,大把大把的after_find,只是为了得到一个实例变量。我要将他们全部kill掉。
看看api是如何说的:
引用
The after_find and after_initialize exceptions

Because after_find and after_initialize are called for each object found and instantiated by a finder, such as Base.find(:all), we‘ve had to implement a simple performance constraint (50% more speed on a simple test case). Unlike all the other callbacks, after_find and after_initialize will only be run if an explicit implementation is defined (def after_find). In that case, all of the callback types will be called.

如果把after_find去掉之后,会出现这样的情况。
>> u=User.find(1)
>> u.instance_eval{@info}
=> nil
>> u.info
=> "ss"
>> u.instance_eval{@info}
=> "ss"
5 楼 orcl_zhang 2010-06-30  
第一遍,user中代码
  attr_accessible :code,:info
  def after_find
    @code = self.id
    @info = self.info
  end

第二遍
  def code
    @code = self.id
  end

  def info
    @info = self.info
  end

两次benchmark结果:
>> require 'benchmark'
=> []
>> Benchmark.bm do |x|
?>  x.report{100.times{User.all}}
>> end
      user     system      total        real
 79.920000   0.060000  79.980000 ( 79.990261)
 41.550000   0.020000  41.570000 ( 41.724401)






4 楼 orcl_zhang 2010-06-17  
Hooopo 写道
你这样优化没有意义。。
代码级别的速度提升是有限的。
如果一个页面好几秒应该分析一下瓶颈在哪里,是db有slow query还是rails代码或是前端页面渲染,或是缓存利用的差。。

在model里面有一些检索代码是在修改,这些只是顺手也修改的。意义不是优化,良好的习惯。我在前面已经写了
引用
养成良好的小习惯吧,如果在大数组里出现这些代码,速度还是有一点点的影响的。
我也并没用指望这点优化能起到多大的作用。
3 楼 Hooopo 2010-06-17  
你这样优化没有意义。。
代码级别的速度提升是有限的。
如果一个页面好几秒应该分析一下瓶颈在哪里,是db有slow query还是rails代码或是前端页面渲染,或是缓存利用的差。。
2 楼 orcl_zhang 2010-06-17  
Hooopo 写道
这么小的差别还是看哪个顺眼用哪个好了。。

length > 0,不是ruby风格的代码,而且效率没有empty?高,差30%。很多eval可以改成instance_eval或者__send__的都改了。现在这个项目的代码很恶心,速度不是一般的慢,一个页面好几秒,记录太多,到处改改,发现还是快了不少,其他地方的优化的空间不是很大。
大家尽量也养成比较好的习惯吧。
1 楼 Hooopo 2010-06-17  
这么小的差别还是看哪个顺眼用哪个好了。。

相关推荐

    Benchmark.rar_benchmark_benchmark三代_benchmark模型_三代benchmark_主动控制

    总结来说,"Benchmark.rar_benchmark_benchmark三代_benchmark模型_三代benchmark_主动控制"是一个专注于主动控制算法评估的资源包,它提供了一个先进的三代Benchmark模型,用于比较和优化控制策略的性能。...

    benchmarksql数据库测试工具--支持达梦数据库版

    ** BenchmarkSQL数据库测试工具概述 ** BenchmarkSQL是一款广泛使用的开源数据库性能测试工具,它能够对各种类型的数据库系统进行基准测试,以评估其在不同工作负载下的性能。该工具旨在提供一个标准化的方法来比较...

    Fritz Chess Benchmark4.3.2完全汉化版

    《Fritz Chess Benchmark4.3.2:深度解析与应用指南》 Fritz Chess Benchmark4.3.2是一款广受欢迎的国际象棋基准测试软件,它由德国的ChessBase公司开发,旨在衡量计算机处理器在执行复杂棋局模拟时的性能。这款...

    数据库经典压测工具benchmarksql5.0 双版本 原版 支持达梦版 亲测可用 附带安装文档

    《数据库压力测试利器:BenchmarkSQL 5.0与Oracle及达梦数据库的深度结合》 BenchmarkSQL是一款广泛使用的开源数据库压力测试工具,尤其在评估和比较不同数据库系统的性能时,它的价值尤为突出。该工具以其易用性...

    AS_SSD_Benchmark 1.6.4194 绿色版解压即用

    AS SSD Benchmark是一款专业的固态硬盘性能测试工具,由德国InnoDisk公司开发。这款软件的主要目的是为用户提供一个简便的方法来评估他们的SSD(固态硬盘)或HDD(机械硬盘)的读写速度,以及I/O操作性能。1.6.4194...

    AS SSD Benchmark 1.6.4237.30508

    AS SSD Benchmark是一款专业的固态硬盘性能测试工具,由德国InnoDisk公司开发,主要用于评估SSD(固态硬盘)和HDD(机械硬盘)的读写速度、IOPS(每秒输入/输出操作次数)等关键性能指标。该工具1.6.4237.30508版本...

    Benchmark functions 优化算法测试函数

    在优化算法领域,benchmark functions是评估和比较不同算法性能的重要工具。这些函数通常是设计成具有各种挑战性特性的,如多模态、非线性、非凸性等,以模拟实际问题中的复杂优化场景。Benchmark functions.zip ...

    AS SSD Benchmark汉化版

    AS SSD Benchmark汉化版是由德国开发的一款SSD(固态硬盘)的评测工具。AS SSD Benchmark是现在市面上最为常用的SSD评测软件,可以测试连续读写、4K对齐、4KB随机读写和响应时间的表现,并给出一个综合评分。同时AS ...

    CIS_CentOS_Linux_7_Benchmark_v3.1.1.pdf

    CIS_CentOS_Linux_7_Benchmark_v3.1.1.pdf文件是关于如何安全配置CentOS Linux 7系统的指南。这份文档由Center for Internet Security(CIS)发布,旨在为用户提供一套标准化的安全基准测试,以帮助管理员加强系统...

    TSP(Travlling Salesman Problem)的Benchmark

    在这个"**TSP_Benchmark**"压缩包中,包含的是旅行商问题的基准测试数据集,这些数据集通常用于验证和比较不同求解算法的性能。这些数据集来源于国外知名的教育网站,具有国际权威性,确保了数据质量和公正性。 每...

    tracker_benchmark_v1.0.zip

    《OTB数据集工具包评测工具包Tracker Benchmark v1.0详解》 OTB(One-Thing-One-Target Benchmark)是计算机视觉领域中一个广泛使用的单目标跟踪数据集,其目的是评估和比较不同追踪算法的性能。Tracker Benchmark ...

    Fritz Chess Benchmark V4.3图吧专用

    《Fritz Chess Benchmark V4.3:CPU多线程能力的专业测试工具》 在信息技术领域,性能测试是评估硬件性能的重要环节,特别是对于CPU这样的核心组件。Fritz Chess Benchmark V4.3是一款专为图吧社区设计的国际象棋...

    solomon benchmark-100customer.rar

    Solomon Benchmark是运筹学和物流领域中广泛使用的车辆路径问题(Vehicle Routing Problem, VRP)的基准测试集合。VRP旨在寻找最有效的路线,使配送车辆能够从一个中央仓库出发,服务多个客户,最后返回仓库,同时...

    Benchmark etcd性能测试工具

    Benchmark etcd性能测试工具

    Benchmark Factory.docx

    《Benchmark Factory TPC-C 测试指南详解》 Benchmark Factory是一款强大的性能测试工具,尤其在评估数据库系统的性能方面,它遵循了TPC-C标准,能够模拟真实的业务负载,从而准确地衡量系统性能。本文将深入探讨...

    KCF_kcf_matlab_benchmark_

    标题中的“KCF_kcf_matlab_benchmark_”指的是基于MATLAB实现的KCF(Kernelized Correlation Filters)算法的基准测试。KCF是一种高效的目标跟踪算法,它在计算机视觉领域有着广泛的应用,特别是在视频分析和监控中...

    Benchmark Datasets.rar

    benchmark数据集主要有(全部为.mat格式可以直接使用,label已处理好):jaffe50_uni,YaleData,ORLData,feret_data,UmistData,AR_ImData,XM2VTS50,MSRA50,MSRA25,Coil20Data,Coil100Data,USPSdata,MnistData,Mpeg7_...

    PHASE II OF THE ASCE BENCHMARK STUDY ON SHM.rar_BENCHMARK ASCE_a

    PHASE II OF THE ASCE BENCHMARK STUDY ON SHM

    benchmarksql-4.1.1.zip

    《BenchmarkSQL 4.1.1:数据库性能测试利器》 BenchmarkSQL,作为一个开源的数据库基准测试工具,广泛应用于数据库性能评估与优化。版本4.1.1是其一个重要里程碑,为开发者和数据库管理员提供了全面的数据库性能...

    apache benchmark ab.exe

    apache benchmark 独立文件 ab.exe 可以直接使用 Version 2.3。一般用户压力测试用。参数如下 .\ab.exe --help Options are: -n requests Number of requests to perform -c concurrency Number of multiple ...

Global site tag (gtag.js) - Google Analytics