- 浏览: 234130 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 1978http://kidlet.sinaapp.com/blog/ ... -
ActiveRecord::Dirty
2011-11-21 10:29 739引用Track unsaved attribute chang ... -
Metaprogramming Ruby
2011-09-30 16:11 1110P30 In a sense, the class keywo ... -
RVM Install
2011-09-17 15:17 787http://beginrescueend.com/ -
json
2011-09-15 09:51 724http://flori.github.com/json/ -
Rails计算某月最后一天
2011-08-12 10:46 1379经常忘记这个函数.mark下. 引用end_of_day, e ... -
关于浮点数精度的问题
2011-05-11 15:50 1214在项目里遇到一个很诡异的问题,因为有一些浮点数的计算,总 ... -
Ruby Memoization(转载)
2010-11-28 23:45 786转载http://fuliang.iteye.com/blog ... -
included() vs extended()
2010-11-04 19:48 721# A little helper from _why cl ... -
ruby的to_proc
2010-10-21 00:41 8641,先看api 引用Method#proc meth.to_p ... -
Nesting Is Different From Inclusion
2010-10-17 10:02 746Nesting Is Different From Inclu ... -
Regular Expressions
2010-10-16 22:55 854... -
ruby里的方法作用域
2010-08-11 09:51 1043在java里private方法在Java当中的含义是只在当前类 ... -
ruby的笔记
2010-05-20 14:23 843最近看了看ruby元编程的一些东西。简单的记下。 1,ruby ... -
闭包(回顾,转载)
2010-03-22 23:02 772闭包的一个重要特征是:过程(方法)内部定义的变量,即使在方法调 ... -
ruby cookbook -- 10.7检查对象是否具有必需的属性
2010-03-01 23:51 736检查是否具有实例变量 class Object de ... -
ruby cookbook -- 10.6. Listening for Changes to a Class监听类的变化
2010-03-01 23:30 734当增加新方法,类方法删除和取消定义的现有方法 class T ... -
ruby cookbook -- 10.4Getting a Reference to a Method(获得方法引用)
2010-03-01 23:25 790A Method object can be stored ... -
irb配置
2010-02-24 13:21 1030#.irbrc require 'rubygems' ... -
ruby cookbook -- 使分配程序能够使用注册回调的返回值
2010-02-23 19:23 758#使分配程序能够使用注册回调的返回值 A simple cha ...
相关推荐
Benchmark etcd性能测试工具
benchmark数据集主要有(全部为.mat格式可以直接使用,label已处理好):jaffe50_uni,YaleData,ORLData,feret_data,UmistData,AR_ImData,XM2VTS50,MSRA50,MSRA25,Coil20Data,Coil100Data,USPSdata,MnistData,Mpeg7_...
apache benchmark 独立文件 ab.exe 可以直接使用 Version 2.3。一般用户压力测试用。参数如下 .\ab.exe --help Options are: -n requests Number of requests to perform -c concurrency Number of multiple ...
第三代benchmark模型,可用于主动控制算法的比较
Benchmark functions.zip 是一些常用的优化算法测试函数,共有17个。
AS SSD Benchmark汉化版是由德国开发的一款SSD(固态硬盘)的评测工具。AS SSD Benchmark是现在市面上最为常用的SSD评测软件,可以测试连续读写、4K对齐、4KB随机读写和响应时间的表现,并给出一个综合评分。同时AS ...
ATTO Disk Benchmark 就是专门用来解决这个问题的绿色小软件. ATTO Disk Benchmark 是一款简单易用的磁盘传输速率检测软件,可以用来检测硬盘, U 盘, 存储卡及其它可移动磁盘的读取及写入速率. 该软件使用了不同大小...
CIS_CentOS_Linux_7_Benchmark_v3.1.1.pdf
TPC的成员主要是计算机软硬件厂家,而非计算机用户,它的功能是制定商务应用基准程序(Benchmark)的标准规范、性能和价格度量,并管理测试结果的发布。 “TPCH”就是用来进行数据库测试的一个基准(benchmark)...
AS SSD Benchmark 1.6是一款SSD固态硬盘专用的测试工具,它可以测试SSD的连续读写、4K、4K-6K随机、访问量及响应时间的表现,并给出一个综合的评分。是针对SSD的一款专门测试工具,能够进行持续读写和随机读写...
ATTO Disk Benchmark 就是专门用来解决这个问题的绿色小软件. ATTO Disk Benchmark 是一款简单易用的磁盘传输速率检测软件,可以用来检测硬盘, U 盘, 存储卡及其它可移动磁盘的读取及写入速率. 该软件使用了不同大小...
数据库经典压测工具benchmarksql5.0 双版本 原版 支持达梦版 亲测可用 附带安装文档 jdk
简单点说benchmarksql就是一个通过JDBC 测试OLTP 的TPC-C。 支持PostgreSQL/EnterpriseDB, DB2, Oracle, SQLSvr, MySQL,DM,Kingbase
CPU是衡量电脑性能的一个最重要的指示,Fritz Chess Benchmark可以测试你CPU计算能力到底有多强,绿色汉化单文件版,小巧好用。 Fritz Chess Benchmark(国际象棋测试软件)能告诉你答案,让你的处理器计算象棋步数,越...
AS SSD Benchmark 内置XP系统下仍打开此工具的必需系统软件(需要安装dotnetfx.exe)
常用的智能优化算法的benchmark函数,供优化算法论文性能比较实用。
2019年欧洲车身会议蔚来ES8_Benchmark数据
SSD固态硬盘传输速度测速工具(AS SSD Benchmark)是一款帮助广大用户检测固态硬盘的持续读写等性能的软件,我们可以通过此软件测试和评估固态硬盘的传输速度,测试连续读写、4KB随机读写和响应时间效率,并给出一个...
ECCV2014最新论文RGBD Salient Object Detection A Benchmark and Algorithms。