Rb_to_float $B$,CY$$(B

whiteleaf e$B$H?=$7$^$9!#e(B

e$B%P%0$H8@$C$F$h$$$N$+$o$+$i$J$+$C$?$N$G%A%1%C%H$K$O$7$^$;$s$G$7$?!#e(B

object.c e$B$Ne(B rb_to_float e$B$Ge(B T_FLOAT
e$B0J30$N%G!<%?$,EO$5$l$?;~$,CY$$$G$9!#e(B
e$BNc$($P$3$s$J;~$K1F6A$,=P$F$-$^$9!#e(B

require “benchmark”
Benchmark.bm { |bm|
vertecies = Array.new(3 * 600000).fill(0)
bm.report {
vertecies.pack(“f*”)
}
}

ruby 1.9.3dev (2010-07-03 trunk 28532) [i386-cygwin]
user system total real
1.437000 0.000000 1.437000 ( 1.433000)

e$B>e$NNc$O!“e(BOpenGL e$B$GBgNL$ND:E@%G!<%?$re(B glBufferSubData
e$B$H$$$&4X?t$,;H$($k$?$a$N%G!<%?$Ke(B
e$BJQ49$7$F$$$k%7!<%s$rA[Dj$7$F$$$^$9!#%]%j%4%s$ND:E@%G!<%?$OBgNL$K$”$k$3$H$,IaDL$J$N$G!“L5BL$KB?$/$7$F$”$ke(B
e$B$o$1$G$O$"$j$^$;$s!#e(B

e$B$b$A$m$s:G=i$+$ie(B float
e$B$KJQ49$7$F$*$1$PLdBj$J$$$o$1$G$9$,!"0l2s$R$C$+$+$C$?$N$G!D!D!#e(B

rb_convert_type e$B$G$O$J$/e(B rb_Float e$B$r;H$($PB.$/$J$j$^$7$?!#e(B

e$B!Je(Brb_Float e$B$KJQ998e!Ke(B
user system total real
0.813000 0.031000 0.844000 ( 0.849000)

Index: object.c

— object.c (e$B%j%S%8%g%se(B 28532)
+++ object.c (e$B:n6H%3%T!<e(B)
@@ -2293,7 +2293,7 @@
val == Qfalse ? “false” :
rb_obj_classname(val));
}

  • return rb_convert_type(val, T_FLOAT, “Float”, “to_f”);
  • return rb_Float(val);
    }

VALUE

Sora H.e$B$G$9e(B.

2010/7/3 whiteleaf [email protected]:

e$B%P%0$H8@$C$F$h$$$N$+$o$+$i$J$+$C$?$N$G%A%1%C%H$K$O$7$^$;$s$G$7$?!#e(B

e$B%P%0$8$c$J$/$F$bJs9p$O4?7^$5$l$k$H;W$$$^$9$he(B.

e$B%A%1%C%H$K$7$F$bLdBj$J$$$H;W$$$^$9e(B. (e$B%+%F%4%j$Oe(B Feature
e$B$,K>$^$7$$$+$Je(B)

e$B$J$+$@$G$9!#e(B

At Sat, 3 Jul 2010 16:09:01 +0900,
whiteleaf wrote in [ruby-dev:41795]:

e$B%P%0$H8@$C$F$h$$$N$+$o$+$i$J$+$C$?$N$G%A%1%C%H$K$O$7$^$;$s$G$7$?!#e(B

Buge$B$"$k$$$Oe(BFeaturee$B$G$bEPO?<+BN$O$4<+M3$K$I$&$>!#e(B

e$B>e$NNc$O!“e(BOpenGL e$B$GBgNL$ND:E@%G!<%?$re(B glBufferSubData e$B$H$$$&4X?t$,;H$($k$?$a$N%G!<%?$Ke(B
e$BJQ49$7$F$$$k%7!<%s$rA[Dj$7$F$$$^$9!#%]%j%4%s$ND:E@%G!<%?$OBgNL$K$”$k$3$H$,IaDL$J$N$G!“L5BL$KB?$/$7$F$”$ke(B
e$B$o$1$G$O$"$j$^$;$s!#e(B

e$B$b$A$m$s:G=i$+$ie(B float e$B$KJQ49$7$F$*$1$PLdBj$J$$$o$1$G$9$,!"0l2s$R$C$+$+$C$?$N$G!D!D!#e(B

rb_convert_type e$B$G$O$J$/e(B rb_Float e$B$r;H$($PB.$/$J$j$^$7$?!#e(B

e$B$3$l$GB.$/$J$k$N$Oe(BFixnum,Bignum,Stringe$B$N;0$De(B(e$B$H$=$N%5%V%/%i%9e(B)e$B$@e(B
e$B$1$G$9$,!"$3$l$@$1B.$/$J$C$F$&$l$7$$$s$G$7$g$&$+!#$=$NBe=~$H$7$Fe(B
to_fe$B$N%*!<%P!<%i%$%I$,L5;k$5$l$k$h$&$K$J$j$^$9$7!#e(B

e$B$=$b$=$b%Q%U%)!<%^%s%9$r9M$($k$N$G$"$l$P!"e(BArray#packe$B$Ge(BFloate$B$KJQe(B
e$B49$5$;$k$3$H<+BN$,0l;~%*%V%8%’%/%H$rBgNL$K;H$$<N$F$K$9$k$3$H$K$Je(B
e$B$k$N$G!"Hr$1$k$Y$-$G$O$J$$$+$H;W$$$^$9$,!#e(B

whiteleaf e$B$G$9e(B

e$B$3$l$GB.$/$J$k$N$Oe(BFixnum,Bignum,Stringe$B$N;0$De(B(e$B$H$=$N%5%V%/%i%9e(B)e$B$@e(B
e$B$1$G$9$,!"$3$l$@$1B.$/$J$C$F$&$l$7$$$s$G$7$g$&$+!#$=$NBe=~$H$7$Fe(B
to_fe$B$N%*!<%P!<%i%$%I$,L5;k$5$l$k$h$&$K$J$j$^$9$7!#e(B

e$B$=$&$$$($Pe(B to_f
e$B:FDj5A$K$h$k%]%j%b!<%U%#%:%`$N$3$H$r40A4$K<:G0$7$F$$$^$7$?!#e(B
1.9.1e$B$Ne(B pack
e$B$NJQ49$,$"$^$j$K$bCY$9$.$?$N$Ge(B(+buggy)e$B!“CY$$$J!A$H$$$&@hF~4Q$,$”$C$?$N$G$9$,!"e(B
e$B:G?7$N%3!<%I$@$H:#$N$^$^$G$b==J,B.$$$N$G!“8B$i$l$?%/%i%9$@$1B.$/$J$C$F$be(B
e$B$”$s$^$j$&$l$7$/$O$J$$$G$9$M!#e(B

e$B$=$b$=$b%Q%U%)!<%^%s%9$r9M$($k$N$G$"$l$P!"e(BArray#packe$B$Ge(BFloate$B$KJQe(B
e$B49$5$;$k$3$H<+BN$,0l;~%*%V%8%’%/%H$rBgNL$K;H$$<N$F$K$9$k$3$H$K$Je(B
e$B$k$N$G!"Hr$1$k$Y$-$G$O$J$$$+$H;W$$$^$9$,!#e(B

e$B$=$&$G$9$M!"$b$A$m$s<B:]$N%3!<%I$G$OHr$1$^$9!#e(B
e$B$J$N$G!"$d$C$Q$jMxJX$r<N$F$FL5M}$KB.$/$9$kI,MW$b$J$5$=$&$G$9$M!#e(B