ruby-changes:39990
From: nobu <ko1@a...>
Date: Wed, 7 Oct 2015 17:31:43 +0900 (JST)
Subject: [ruby-changes:39990] nobu:r52071 (trunk): string.c: optimize String#times
nobu 2015-10-07 17:31:22 +0900 (Wed, 07 Oct 2015) New Revision: 52071 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=52071 Log: string.c: optimize String#times * string.c (rb_str_times): optimize for the argument 0 and 1. Modified files: trunk/ChangeLog trunk/string.c Index: ChangeLog =================================================================== --- ChangeLog (revision 52070) +++ ChangeLog (revision 52071) @@ -1,3 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Wed Oct 7 17:30:50 2015 Nobuyoshi Nakada <nobu@r...> + + * string.c (rb_str_times): optimize for the argument 0 and 1. + Wed Oct 7 01:20:46 2015 Koichi Sasada <ko1@a...> * gc.h, gc.c: introduce new debug function rb_obj_info_dump(VALUE obj) Index: string.c =================================================================== --- string.c (revision 52070) +++ string.c (revision 52071) @@ -1598,6 +1598,15 @@ rb_str_times(VALUE str, VALUE times) https://github.com/ruby/ruby/blob/trunk/string.c#L1598 char *ptr2; int termlen; + if (times == INT2FIX(1)) { + return rb_str_dup(str); + } + if (times == INT2FIX(0)) { + str2 = str_alloc(rb_obj_class(str)); + rb_enc_copy(str2, str); + OBJ_INFECT(str2, str); + return str2; + } len = NUM2LONG(times); if (len < 0) { rb_raise(rb_eArgError, "negative argument"); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/