2012-03-10 3 views

답변

1

이 평가하는 일반적인 방법의 정의와 블록 사이에 거의 차이가 없다 : 경우,

bench(1000000) do 
    B.class_eval("def test1; end") 
end 
=> 24.02 sec 

어쨌든, 이러한 구조는 자신의 목적에 의해 사용되어야한다 : 여기

bench(1000000) do 
    class A; def test; end end 
end 
=> 2.5 sec 

class B; end 
bench(1000000) do 
    B.class_eval{ def test; end } 
end 
=> 2.75 sec 

는 그러나이 평가 문자열을 큰 차이입니다 당신은 metaprogramming을 한 다음 클래스 또는 인스턴스 평가를 사용합니다. 만약 당신이 단지 메소드를 정의한다면, 사소한 일에는 너무 영리하지 마십시오.