- 浏览: 244543 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (173)
- ruby (38)
- rails (42)
- javascript (7)
- jquery (1)
- linux (15)
- design patterns (1)
- project management (6)
- IT (7)
- life (19)
- data structures and algorithm analysis (2)
- css (1)
- prototype (1)
- mysql (4)
- html (1)
- git (3)
- novels (1)
- c (1)
- Latex (13)
- erlang (1)
- 求职 (1)
- API (0)
- Shell (4)
- Rabbit MQ (1)
- 计算机基础 (1)
- svn (2)
- 疑问 (1)
最新评论
-
zhangyou1010:
回去倒立去,哈哈。
作为一个程序员,身体很重要! -
Hooopo:
Ruby MetaProgramming is all abo ...
Metaprogramming Ruby -
orcl_zhang:
yiqi1943 写道LZ现在上学还是工作呢工作好多年了。不过 ...
2011年 -
yiqi1943:
LZ现在上学还是工作呢
2011年 -
tjcjc:
query cache
就是一个简单的hash
key就是sq ...
Rails sql延迟加载和自带缓存
1,length > 0和blank?和emtpy?
2,eval和__send
养成良好的小习惯吧,如果在大数组里出现这些代码,速度还是有一点点的影响的。
在model里面有一些检索代码是在修改,这些只是顺手也修改的。意义不是优化,良好的习惯。我在前面已经写了
length > 0,不是ruby风格的代码,而且效率没有empty?高,差30%。很多eval可以改成instance_eval或者__send__的都改了。现在这个项目的代码很恶心,速度不是一般的慢,一个页面好几秒,记录太多,到处改改,发现还是快了不少,其他地方的优化的空间不是很大。
大家尽量也养成比较好的习惯吧。
>> 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是如何说的:
如果把after_find去掉之后,会出现这样的情况。
看看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.
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中代码
第二遍
两次benchmark结果:
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代码或是前端页面渲染,或是缓存利用的差。。
代码级别的速度提升是有限的。
如果一个页面好几秒应该分析一下瓶颈在哪里,是db有slow query还是rails代码或是前端页面渲染,或是缓存利用的差。。
在model里面有一些检索代码是在修改,这些只是顺手也修改的。意义不是优化,良好的习惯。我在前面已经写了
引用
养成良好的小习惯吧,如果在大数组里出现这些代码,速度还是有一点点的影响的。
我也并没用指望这点优化能起到多大的作用。
3 楼
Hooopo
2010-06-17
你这样优化没有意义。。
代码级别的速度提升是有限的。
如果一个页面好几秒应该分析一下瓶颈在哪里,是db有slow query还是rails代码或是前端页面渲染,或是缓存利用的差。。
代码级别的速度提升是有限的。
如果一个页面好几秒应该分析一下瓶颈在哪里,是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
这么小的差别还是看哪个顺眼用哪个好了。。
发表评论
-
Ruby 搭建环境
2013-06-01 11:17 2065http://kidlet.sinaapp.com/blog/ ... -
ActiveRecord::Dirty
2011-11-21 10:29 792引用Track unsaved attribute chang ... -
Metaprogramming Ruby
2011-09-30 16:11 1196P30 In a sense, the class keywo ... -
RVM Install
2011-09-17 15:17 907http://beginrescueend.com/ -
json
2011-09-15 09:51 841http://flori.github.com/json/ -
Rails计算某月最后一天
2011-08-12 10:46 1461经常忘记这个函数.mark下. 引用end_of_day, e ... -
关于浮点数精度的问题
2011-05-11 15:50 1290在项目里遇到一个很诡异的问题,因为有一些浮点数的计算,总 ... -
Ruby Memoization(转载)
2010-11-28 23:45 828转载http://fuliang.iteye.com/blog ... -
included() vs extended()
2010-11-04 19:48 766# A little helper from _why cl ... -
ruby的to_proc
2010-10-21 00:41 9171,先看api 引用Method#proc meth.to_p ... -
Nesting Is Different From Inclusion
2010-10-17 10:02 803Nesting Is Different From Inclu ... -
Regular Expressions
2010-10-16 22:55 910... -
ruby里的方法作用域
2010-08-11 09:51 1105在java里private方法在Java当中的含义是只在当前类 ... -
ruby的笔记
2010-05-20 14:23 978最近看了看ruby元编程的一些东西。简单的记下。 1,ruby ... -
闭包(回顾,转载)
2010-03-22 23:02 863闭包的一个重要特征是:过程(方法)内部定义的变量,即使在方法调 ... -
ruby cookbook -- 10.7检查对象是否具有必需的属性
2010-03-01 23:51 790检查是否具有实例变量 class Object de ... -
ruby cookbook -- 10.6. Listening for Changes to a Class监听类的变化
2010-03-01 23:30 790当增加新方法,类方法删除和取消定义的现有方法 class T ... -
ruby cookbook -- 10.4Getting a Reference to a Method(获得方法引用)
2010-03-01 23:25 833A Method object can be stored ... -
irb配置
2010-02-24 13:21 1090#.irbrc require 'rubygems' ... -
ruby cookbook -- 使分配程序能够使用注册回调的返回值
2010-02-23 19:23 796#使分配程序能够使用注册回调的返回值 A simple cha ...
相关推荐
总结来说,"Benchmark.rar_benchmark_benchmark三代_benchmark模型_三代benchmark_主动控制"是一个专注于主动控制算法评估的资源包,它提供了一个先进的三代Benchmark模型,用于比较和优化控制策略的性能。...
** BenchmarkSQL数据库测试工具概述 ** BenchmarkSQL是一款广泛使用的开源数据库性能测试工具,它能够对各种类型的数据库系统进行基准测试,以评估其在不同工作负载下的性能。该工具旨在提供一个标准化的方法来比较...
《Fritz Chess Benchmark4.3.2:深度解析与应用指南》 Fritz Chess Benchmark4.3.2是一款广受欢迎的国际象棋基准测试软件,它由德国的ChessBase公司开发,旨在衡量计算机处理器在执行复杂棋局模拟时的性能。这款...
《数据库压力测试利器:BenchmarkSQL 5.0与Oracle及达梦数据库的深度结合》 BenchmarkSQL是一款广泛使用的开源数据库压力测试工具,尤其在评估和比较不同数据库系统的性能时,它的价值尤为突出。该工具以其易用性...
AS SSD Benchmark是一款专业的固态硬盘性能测试工具,由德国InnoDisk公司开发。这款软件的主要目的是为用户提供一个简便的方法来评估他们的SSD(固态硬盘)或HDD(机械硬盘)的读写速度,以及I/O操作性能。1.6.4194...
AS SSD Benchmark是一款专业的固态硬盘性能测试工具,由德国InnoDisk公司开发,主要用于评估SSD(固态硬盘)和HDD(机械硬盘)的读写速度、IOPS(每秒输入/输出操作次数)等关键性能指标。该工具1.6.4237.30508版本...
在优化算法领域,benchmark functions是评估和比较不同算法性能的重要工具。这些函数通常是设计成具有各种挑战性特性的,如多模态、非线性、非凸性等,以模拟实际问题中的复杂优化场景。Benchmark functions.zip ...
AS SSD Benchmark汉化版是由德国开发的一款SSD(固态硬盘)的评测工具。AS SSD Benchmark是现在市面上最为常用的SSD评测软件,可以测试连续读写、4K对齐、4KB随机读写和响应时间的表现,并给出一个综合评分。同时AS ...
CIS_CentOS_Linux_7_Benchmark_v3.1.1.pdf文件是关于如何安全配置CentOS Linux 7系统的指南。这份文档由Center for Internet Security(CIS)发布,旨在为用户提供一套标准化的安全基准测试,以帮助管理员加强系统...
在这个"**TSP_Benchmark**"压缩包中,包含的是旅行商问题的基准测试数据集,这些数据集通常用于验证和比较不同求解算法的性能。这些数据集来源于国外知名的教育网站,具有国际权威性,确保了数据质量和公正性。 每...
《OTB数据集工具包评测工具包Tracker Benchmark v1.0详解》 OTB(One-Thing-One-Target Benchmark)是计算机视觉领域中一个广泛使用的单目标跟踪数据集,其目的是评估和比较不同追踪算法的性能。Tracker Benchmark ...
《Fritz Chess Benchmark V4.3:CPU多线程能力的专业测试工具》 在信息技术领域,性能测试是评估硬件性能的重要环节,特别是对于CPU这样的核心组件。Fritz Chess Benchmark V4.3是一款专为图吧社区设计的国际象棋...
Solomon Benchmark是运筹学和物流领域中广泛使用的车辆路径问题(Vehicle Routing Problem, VRP)的基准测试集合。VRP旨在寻找最有效的路线,使配送车辆能够从一个中央仓库出发,服务多个客户,最后返回仓库,同时...
Benchmark etcd性能测试工具
《Benchmark Factory TPC-C 测试指南详解》 Benchmark Factory是一款强大的性能测试工具,尤其在评估数据库系统的性能方面,它遵循了TPC-C标准,能够模拟真实的业务负载,从而准确地衡量系统性能。本文将深入探讨...
标题中的“KCF_kcf_matlab_benchmark_”指的是基于MATLAB实现的KCF(Kernelized Correlation Filters)算法的基准测试。KCF是一种高效的目标跟踪算法,它在计算机视觉领域有着广泛的应用,特别是在视频分析和监控中...
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
《BenchmarkSQL 4.1.1:数据库性能测试利器》 BenchmarkSQL,作为一个开源的数据库基准测试工具,广泛应用于数据库性能评估与优化。版本4.1.1是其一个重要里程碑,为开发者和数据库管理员提供了全面的数据库性能...
apache benchmark 独立文件 ab.exe 可以直接使用 Version 2.3。一般用户压力测试用。参数如下 .\ab.exe --help Options are: -n requests Number of requests to perform -c concurrency Number of multiple ...