- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
什么在以后调用时更快:
def first_method?() second_method?() end
或
alias_method :first method, :second_method
如果可能的话,为什么?
(注意:我不问什么更好/更好等等 -> 这里只有原始速度以及为什么它更快很有趣)
最佳答案
至少在 Ruby 1.8.6 中,别名似乎更快:
#!/usr/local/bin/ruby
require 'benchmark'
$global_bool = true
class Object
def first_method?
$global_bool
end
def second_method?
first_method?
end
alias_method :third_method?, :first_method?
end
Benchmark.bm(7) do |x|
x.report("first:") { 1000000.times { first_method? }}
x.report("second:") { 1000000.times { second_method? }}
x.report("third:") { 1000000.times { third_method? }}
end
结果:
$ ./test.rb
user system total real
first: 0.281000 0.000000 0.281000 ( 0.282000)
second: 0.469000 0.000000 0.469000 ( 0.468000)
third: 0.281000 0.000000 0.281000 ( 0.282000)
显然,您有一个方法调用较少(查找接收器...)。所以它变得更快似乎很自然。
关于ruby - 什么在 Ruby : defining the alias method or using alias_method? 中运行得更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7281876/
这个问题在这里已经有了答案: How to alias a class method in rails model? (5 个回答) 去年关闭。 考虑以下类: class Foo def an_i
在以下代码中来自 ruby docs ,为什么 orig_exit 最终没有在无限递归中调用自己? module Mod alias_method :orig_exit, :exit def
我对 alias_method 感到困惑.下面的示例似乎应该产生一个无限循环,但实际上并没有: class ApplicationController dual_accessor :fil
我无法理解这段代码中 alias_method 的用途 ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do alia
我无法理解这段代码中 alias_method 的用途 ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do alia
在 Ruby 中,您可以通过多种方式重新定义方法。一种是打通eigenclass,也就是单例类,还有一种是使用instance_eval。但是,alias_method 仅适用于特征类。为什么会这样,
我最近一直在阅读 Metaprogrammin Ruby 第 2 版,在第 5 章的末尾,他们提供了一个小测验 Your task is to change Fixnum class so that
我有一个公开两个接口(interface)方法 client_options 和 user_options 的类,在这个祖先级别,它们等同于 default_options。我不希望其他开发人员直接实
我一直在尝试修补全局缓存模块,但我不明白为什么它不起作用。 有人有什么建议吗? 这是错误: NameError: undefined method `get' for module `Cache'
我找到了一篇关于 alias 与 alias_method 的博文。如该博客文章中给出的示例所示,我只是想将一个方法作为同一个类中另一个方法的别名。我应该使用哪个?我总是看到使用 alias,但有人告
假设我有一个包含三个子类的基类。基类有一个大多数子类通用的方法,它有一个别名: class Beer def bottle_content '250 ml' end alias_m
我正在尝试覆盖 Rails 的“fields_for”方法,我目前正在这样做: module ActionView::Helpers::FormHelper include ActionView:
我正在开发我的网络应用程序,我想覆盖一个方法,例如,如果原始类是 class A def foo 'original' end end 我想重写 foo 方法,可以这样做 class
如果这两个方法只是同义词,为什么人们还要费心写额外的字符“_chain”? 最佳答案 没有。 alias_method 是 Ruby 的标准方法。 alias_method_chain 是一个 Rai
我有一个关于 Mechanize::Cookie 行为不端的问题,我想尝试用猴子修补它。我的代码: class Mechanize::Cookie class << self; alias_met
我在理解 alias_method/alias_method_chain 时遇到一点困难。我有以下代码: module ActionView::Helpers module FormHelper
class Country < ActiveRecord::Base #alias_method :name, :langEN # here fails #alias_method :name
我有一个直接从 ActiveResource::Base 继承的模型,我正在尝试为记录表中的大部分列运行 alias_method,但结果是一个 NameError: NameError: undef
什么在以后调用时更快: def first_method?() second_method?() end 或 alias_method :first method, :second_method 如果
我有以下初始化程序: app/config/initializers/store_location.rb module StoreLocation def self.skip_store_loca
我是一名优秀的程序员,十分优秀!