# \[patch\] performance improvement patch for benchmark/bm\_so\_count\_words.rb

**URL:** <https://www.ruby-forum.com/t/patch-performance-improvement-patch-for-benchmark-bm-so-count-words-rb/148568>\
**Category:** Development\
**Created:** [September 15, 2008, 5:21am UTC](https://www.ruby-forum.com/t/patch-performance-improvement-patch-for-benchmark-bm-so-count-words-rb/148568 "2008-09-15T05:21:24Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![masayoshi\_takahashi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ac8455/32.png) [@masayoshi\_takahashi](https://www.ruby-forum.com/u/masayoshi_takahashi)\
**Post date:** [September 15, 2008, 5:21am UTC](https://www.ruby-forum.com/t/patch-performance-improvement-patch-for-benchmark-bm-so-count-words-rb/148568/1 "2008-09-15T05:21:24Z")

</div>

é«˜æ©‹å¾ç¾©ã§ã™ã€‚

1.9ã§benchmarkã‚’èµ°ã‚‰ã›ãŸã¨ã“ã‚ã€bm\_so\_count\_wordsã®çµæžœãŒã²ã©ã‹ã£ãŸ  
ï¼ˆ1.8ã®ã¨ãã‚ˆã‚Š30å€ãã‚‰ã„é…ããªã‚‹ï¼‰ã®ã§ã€ãƒ‘ãƒƒãƒã‚’æ›¸ã„ã¦ã¿ã¾ã—ãŸã€‚  
åŸºæœ¬çš„ã«ã¯singlebyteã®æ™‚ã«ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’æ°—ã«ã›ãšã€1.8ã®æ™‚ã®  
ã‚³ãƒ¼ãƒ‰ã®ã‚ˆã†ã«å‡¦ç†ã•ã›ã‚‹ã‚‚ã®ã§ã™ã€‚ã“ã‚Œã§ã‚‚1.8ã®2å€ç¨‹åº¦ã®æ™‚é–“ã¯  
ã‹ã‹ã£ã¦ã—ã¾ã†ã‚ˆã†ã§ã™ãŒ(Mac OS X 10.5.4)ã€‚

ã‚ã¨ã€single\_byte\_optimizable(str) ã«ã€rb\_enc\_str\_asciionly\_p(str) ã‚’  
åŠ ãˆã¦ã—ã¾ã£ã¦ã‚‚ã„ã„ã®ã§ã—ã‚‡ã†ã‹ï¼Ÿã€€ä¸€èˆ¬ã«åŠ ãˆã¦ã—ã¾ã£ã¦ã‚ˆã„ã®ã‹  
ã‚ˆãåˆ†ã‹ã‚‰ãªã‹ã£ãŸã®ã§ã€ã“ã®patchã§ã¯ã€  
if (single\_byte\_optimizable(str) || rb\_enc\_str\_asciionly\_p(str)) {  
ãªã©ã¨ã„ã†å½¢ã§åˆ¤åˆ¥ã™ã‚‹ã‚ˆã†ã«ã—ã¦ã„ã¾ã™ã€‚

singlebyteã®æ™‚ã ã‘æ—©ããªã£ã¦ã©ãƒ¼ã™ã‚‹ã€ã¨æ„è¦‹ã‚‚ã‚ã‚‹ã‹ã¨  
æ€ã„ã¾ã™ãŒã€ãªã„ã‚ˆã‚Šã¯ãƒžã‚·ã‹ã¨æ€ã†ã®ã§ã€ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚

é«˜æ©‹å¾ç¾© (removed\_email\_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![masayoshi\_takahashi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ac8455/32.png) [@masayoshi\_takahashi](https://www.ruby-forum.com/u/masayoshi_takahashi)\
**Post date:** [September 15, 2008, 5:43am UTC](https://www.ruby-forum.com/t/patch-performance-improvement-patch-for-benchmark-bm-so-count-words-rb/148568/2 "2008-09-15T05:43:36Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:36300] [patch] performance improvement patch  
for benchmark/bm\_so\_count\_words.rb”  
on Mon, 15 Sep 2008 12:13:41 +0900, “masayoshi takahashi”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|1.9e$B$Ge(Bbenchmarke$B$rAv$i$;$?$H$3$m!“e(Bbm\_so\_count\_wordse$B$N7k2L$,$R$I$+$C$?e(B  
|e$B!Je(B1.8e$B$N$H$-$h$je(B30e$BG$/$i$$CY$/$J$k!K$N$G!”%Q%C%A$r=q$$$F$\_$^$7$?!#e(B  
|e$B4pK\E\*$K$Oe(Bsinglebytee$B$N;~$K%(%s%3!\<%G%#%s%0$r5$$K$;$:!"e(B1.8e$B$N;~$Ne(B  
|e$B%3!\<%I$N$h$&$K=hM}$5$;$k$b$N$G$9!#$3$l$G$be(B1.8e$B$Ne(B2e$BG\DxEY$N;~4V$Oe(B  
|e$B$+$+$C$F$7$^$&$h$&$G$9$,e(B(Mac OS X 10.5.4)e$B!#e(B

e$B$“$”!":#F|!“869F$r$7$”$2$?$i\<h$j3]$+$m$&$H;W$C$F$$$?$N$K!#e(B

|e$B$"$H!"e(Bsingle\_byte\_optimizable(str) e$B$K!“e(Brb\_enc\_str\_asciionly\_p(str) e$B$re(B  
|e$B2C$($F$7$^$C$F$b$$$$$N$G$7$g$&$+!)!!0lHL$K2C$($F$7$^$C$F$h$$$N$+e(B  
|e$B$h$/J,$+$i$J$+$C$?$N$G!”$3$Ne(Bpatche$B$G$O!"e(B  
| if (single\_byte\_optimizable(str) || rb\_enc\_str\_asciionly\_p(str)) {  
|e$B$J$I$H$$$&7A$GH=JL$9$k$h$&$K$7$F$$$^$9!#e(B

single\_byte\_optimizable()e$B$Oe(B

mbmaxlene$B$,e(B1  
e$B$^$?$Oe(BENC\_CODERANGE\_7BIT

e$B$N;~??$K$J$j!"e(B

rb\_enc\_str\_asciionly\_p()e$B$Oe(B

asciicompatiblee$B$G$"$je(B(mbminlene$B$,e(B1e$B$Ge(Bdummye$B$G$O$J$$e(B)e$B!"e(B  
e$B$+$De(BENC\_CODERANGE\_7BIT

e$B$J$N$G!“$J$s$+;w$?$h$&$J\>r7o$K$J$C$F$^$9!#HyL/$K0c$&$N$,$J$\<e(B  
e$B$@$+$h$/$o$+$i$J$$$N$G$9$,!”$I$C$A$+$G==J,$G$O$J$$$+$H;W$$$^e(B  
e$B$9!#e(B

|singlebytee$B$N;~$@$1Aa$/$J$C$F$I!\<$9$k!“$H0U8+$b$”$k$+$He(B  
|e$B;W$$$^$9$,!“$J$$$h$j$O%^%7$+$H;W$&$N$G!”$h$m$7$/$\*4j$$$7$^$9!#e(B

e$B$$$d!"e(Bsinglebytee$B$N;~$KB.$$$N$O=EMW$@$H;W$$$^$9!#$A$g$C$H%A%'%Ce(B  
e$B%/$7$F$+$i%3%\_%C%H$7$^$7$g$&!#e(B

```
                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

```

---

<div class="post-metadata">

**Author:** ![masayoshi\_takahashi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ac8455/32.png) [@masayoshi\_takahashi](https://www.ruby-forum.com/u/masayoshi_takahashi)\
**Post date:** [September 15, 2008, 5:59am UTC](https://www.ruby-forum.com/t/patch-performance-improvement-patch-for-benchmark-bm-so-count-words-rb/148568/3 "2008-09-15T05:59:58Z")

</div>

e$B9b66@,5A$G$9!#e(B

2008/09/15 12:35 Yukihiro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> |1.9e$B$Ge(Bbenchmarke$B$rAv$i$;$?$H$3$m!“e(Bbm\_so\_count\_wordse$B$N7k2L$,$R$I$+$C$?e(B  
> |e$B!Je(B1.8e$B$N$H$-$h$je(B30e$BG$/$i$$CY$/$J$k!K$N$G!”%Q%C%A$r=q$$$F$\_$^$7$?!#e(B  
> |e$B4pK\E\*$K$Oe(Bsinglebytee$B$N;~$K%(%s%3!\<%G%#%s%0$r5$$K$;$:!"e(B1.8e$B$N;~$Ne(B  
> |e$B%3!\<%I$N$h$&$K=hM}$5$;$k$b$N$G$9!#$3$l$G$be(B1.8e$B$Ne(B2e$BG\DxEY$N;~4V$Oe(B  
> |e$B$+$+$C$F$7$^$&$h$&$G$9$,e(B(Mac OS X 10.5.4)e$B!#e(B
> 
> e$B$“$”!":#F|!“869F$r$7$”$2$?$i\<h$j3]$+$m$&$H;W$C$F$$$?$N$K!#e(B

e$B$9$\_$^$;$se(B:)  
e$B$“$H!”:rF|OC$7$F$$$?e(Bdowncasee$B$,%%H%k%M%C%/$K$J$C$F$$$?7o$O!"e(B  
e$BJL$Ne(Bshootoute$B$N\<BAu$G$N%5%s%W%k$G$7$?!#e(B

> e$B$N;~??$K$J$j!"e(B
> 
> rb\_enc\_str\_asciionly\_p()e$B$Oe(B
> 
> asciicompatiblee$B$G$"$je(B(mbminlene$B$,e(B1e$B$Ge(Bdummye$B$G$O$J$$e(B)e$B!"e(B  
> e$B$+$De(BENC\_CODERANGE\_7BIT
> 
> e$B$J$N$G!“$J$s$+;w$?$h$&$J\>r7o$K$J$C$F$^$9!#HyL/$K0c$&$N$,$J$\<e(B  
> e$B$@$+$h$/$o$+$i$J$$$N$G$9$,!”$I$C$A$+$G==J,$G$O$J$$$+$H;W$$$^e(B  
> e$B$9!#e(B

1.9e$B$G$O!"e(Basciie$B$@$1$N%U%!%$%k$rFI$\_9~$`\>l9g$G$b!"FI$_9~$s$@e(B  
e$BJ8;zNs$Ne(Bencodinge$B$O%G%U%)%k%H$Ge(BUTF-8e$B$K$J$k$h$&$J$N$G!"8=\>u$Ne(B  
single\_byte\_optimizable()  
e$B$G$O??$K$J$j$^$;$se(B(e$B$N$G:$$C$?e(B)e$B!#$^$?!"e(B  
rb\_enc\_str\_asciionly\_p()  
e$B$N$_$G$O!"e(BASCII-8BITe$B$G$O??$K$J$i$J$$e(B  
e$B$h$&$J5$$,$9$k$N$G!"N\>J}$N\>r7o$r:.$\<$?$h$&$J$b$N$,e(B  
e$BI,MW$K$J$k$N$G$O$J$$$+$H!#e(B

e$B$A$J$\_$K$d$j$?$$$N$O!"J8;zNs$rAv::$9$k:]$K!"e(Bsinglebytee$B$:$De(B  
e$BAv::$9$l$P$h$$$+$I$&$+$N$?$a$NH=JL\>r7o$N$D$b$j$G$9!#e(B

> |singlebytee$B$N;~$@$1Aa$/$J$C$F$I!\<$9$k!“$H0U8+$b$”$k$+$He(B  
> |e$B;W$$$^$9$,!“$J$$$h$j$O%^%7$+$H;W$&$N$G!”$h$m$7$/$\*4j$$$7$^$9!#e(B
> 
> e$B$$$d!"e(Bsinglebytee$B$N;~$KB.$$$N$O=EMW$@$H;W$$$^$9!#$A$g$C$H%A%'%Ce(B  
> e$B%/$7$F$+$i%3%\_%C%H$7$^$7$g$&!#e(B

e$B$$$^$$$A9g$C$F$k$+\<+?.$J$$$N$G!"$h$m$7$/3NG’$7$F$$$?$@$1$l$P!#e(B

e$B9b66@,5Ae(B (removed\_email\_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![masayoshi\_takahashi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ac8455/32.png) [@masayoshi\_takahashi](https://www.ruby-forum.com/u/masayoshi_takahashi)\
**Post date:** [September 15, 2008, 9:14am UTC](https://www.ruby-forum.com/t/patch-performance-improvement-patch-for-benchmark-bm-so-count-words-rb/148568/4 "2008-09-15T09:14:53Z")

</div>

In article  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
“masayoshi takahashi” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> 1.9e$B$G$O!"e(Basciie$B$@$1$N%U%!%$%k$rFI$\_9~$`\>l9g$G$b!"FI$_9~$s$@e(B  
> e$BJ8;zNs$Ne(Bencodinge$B$O%G%U%)%k%H$Ge(BUTF-8e$B$K$J$k$h$&$J$N$G!"8=\>u$Ne(B  
> single\_byte\_optimizable() e$B$G$O??$K$J$j$^$;$se(B(e$B$N$G:$$C$?e(B)e$B!#$^$?!"e(B  
> rb\_enc\_str\_asciionly\_p() e$B$N$_$G$O!"e(BASCII-8BITe$B$G$O??$K$J$i$J$$e(B  
> e$B$h$&$J5$$,$9$k$N$G!"N\>J}$N\>r7o$r:.$\<$?$h$&$J$b$N$,e(B  
> e$BI,MW$K$J$k$N$G$O$J$$$+$H!#e(B

rb\_enc\_str\_asciionly\_p e$B$OJ8;zNs$r%9%-%c%s$9$k2DG=@-$,$"$j$^e(B  
e$B$9!#e(B

e$B$b$7!“L\E\*$N=hM}\<+BN$h$j$bH=JL$K;~4V$,$+$+$k$N$J$i!”$=$l$OE,e(B  
e$B@Z$G$O$J$$$G$7$g$&!#e(B

---

<div class="post-metadata">

**Author:** ![masayoshi\_takahashi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ac8455/32.png) [@masayoshi\_takahashi](https://www.ruby-forum.com/u/masayoshi_takahashi)\
**Post date:** [September 15, 2008, 7:00am UTC](https://www.ruby-forum.com/t/patch-performance-improvement-patch-for-benchmark-bm-so-count-words-rb/148568/5 "2008-09-15T07:00:48Z")

</div>

e$B@.@%$G$9!#e(B

masayoshi takahashi wrote:

> e$B$h$/J,$+$i$J$+$C$?$N$G!"$3$Ne(Bpatche$B$G$O!"e(B  
> if (single\_byte\_optimizable(str) || rb\_enc\_str\_asciionly\_p(str)) {  
> e$B$J$I$H$$$&7A$GH=JL$9$k$h$&$K$7$F$$$^$9!#e(B
> 
> singlebytee$B$N;~$@$1Aa$/$J$C$F$I!\<$9$k!"$H0U8+$b$"$k$+$He(B  
> e$B;W$$$^$9$,!"$J$$$h$j$O%^%7$+$H;W$&$N$G!"$h$m$7$/$\*4j$$$7$^$9!#e(B

[ruby-core:18532] e$B$KF1\<q;]$N$b$N$r4^$`%Q%C%A$,$"$j$^$9$M!#e(B  
e$B$I$NDxEY$+$V$C$F$k$+$^$G$O$^$@8+$F$$$^$;$s$,$H$j$$$=$.!#e(B

---

<div class="post-metadata">

**Author:** ![masayoshi\_takahashi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ac8455/32.png) [@masayoshi\_takahashi](https://www.ruby-forum.com/u/masayoshi_takahashi)\
**Post date:** [September 17, 2008, 1:03am UTC](https://www.ruby-forum.com/t/patch-performance-improvement-patch-for-benchmark-bm-so-count-words-rb/148568/6 "2008-09-17T01:03:03Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:36337] Re: [patch] performance improvement  
patch for benchmark/bm\_so\_count\_words.rb”  
on Wed, 17 Sep 2008 03:12:49 +0900, “masayoshi takahashi”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|e$B:G6a$N%a!\<%ke(B[ruby-core:18616]e$B$N!"e(Bcase.pate$B$He(Bcasecmp.pate$B$J$s$+$Oe(B  
|e$BF1\<q;]$N$b$N$H;W$o$l$^$9!#e(B

e$B:G?7$Ne(Btrunke$B$G$O$_$_$`$M\<h$j9~$s$G$^$9!#e(B

|e$B$G!“@.@%$5$s$4;XE&$Ne(B[ruby-core:18532]e$B$K$h$l$P!“e(Brb\_str\_modify()e$B$Ge(B  
|CODERANGEe$B$r%/%j%”$7$F$$$k$N$,LdBj$G!”$=$l$,$J$1$l$P:FEYe(B  
|e$BH=JL$9$kI,MW$,$J$$$N$G$O!“$H$$$&$3$H$G$7$?!#3N$+$K7W$C$F$\_$k$He(B  
|e$B$=$l$C$]$$$G$9!#e(B  
|  
| \* e$B$3$NG’\<1$O$”$C$F$^$9$+!)e(B

e$B$"$C$F$^$9!#e(B

| \* rb\_str\_modify()e$B$N!“e(B ENC\_CODERANGE\_BROKENe$B$8$c$J$1$l$Pe(B  
| e$B%/%j%”$7$J$$HG$re(Bstr\_modify()e$B$H$$$&L\>A0$G:n$k!"$,$$$$$G$9$+!)e(B

str\_modify\_keep\_cr()e$B$H$$$&L\>A0$GF3F~$7$^$7$?!#e(B

|e$B!J8D?ME\*$K$Oe(Brb\_str\_modify()e$B$H$N0c$$$,J,$+$j$K$/$$$H$$$&$+!“$=$b$=$be(B  
|e$B!!e(Brb\_str\_modify()e$B$rJQ$($F$7$^$C$F$$$$$N$G$O$J$$$+$H$$$&5$$be(B  
|e$B!!$9$k$s$G$9$,!”$d$C$Q$j%/%j%"$9$kHG$bI,MW$J$s$G$7$g$&$+!)!Ke(B

rb\_str\_modify()e$B$r8F$V$H$$$&$3$H$OJ8;zNs$rJQ99$9$kM=Dj$,$“$k$He(B  
e$B$$$&$3$H$G!”$=$l$O$D$^$j0lHLO@$H$7$F$Oe(BCODERANGEe$B\>pJs$,0];}$5$le(B  
e$B$k$3$H$b4|BT$G$-$J$$$H$$$&$3$H$G$O$J$$$+$H;W$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![masayoshi\_takahashi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ac8455/32.png) [@masayoshi\_takahashi](https://www.ruby-forum.com/u/masayoshi_takahashi)\
**Post date:** [September 16, 2008, 11:00pm UTC](https://www.ruby-forum.com/t/patch-performance-improvement-patch-for-benchmark-bm-so-count-words-rb/148568/7 "2008-09-16T23:00:36Z")

</div>

e$B9b66@,5A$G$9!#e(B

2008/09/15 13:51 NARUSE, Yui [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> [ruby-core:18532] e$B$KF1\<q;]$N$b$N$r4^$`%Q%C%A$,$"$j$^$9$M!#e(B  
> e$B$I$NDxEY$+$V$C$F$k$+$^$G$O$^$@8+$F$$$^$;$s$,$H$j$$$=$.!#e(B

e$B$_$_!"$J$s$+$+$V$C$F$^$9$M!#e(B  
e$B:G6a$N%a!\<%ke(B[ruby-core:18616]e$B$N!"e(Bcase.pate$B$He(Bcasecmp.pate$B$J$s$+$Oe(B  
e$BF1\<q;]$N$b$N$H;W$o$l$^$9!#e(B

2008/09/15 16:06 Tanaka A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> e$B$b$7!“L\E\*$N=hM}\<+BN$h$j$bH=JL$K;~4V$,$+$+$k$N$J$i!”$=$l$OE,e(B  
> e$B@Z$G$O$J$$$G$7$g$&!#e(B

e$B$d$C$Q$j$=$&$G$9$h$M$(!#H=JL$K;~4V$r$+$1$F$G$b=hM}A4BN$,Aa$$e(B  
e$B\>l9g$b$“$k$N$G$9$,!”;~4V$r$+$1$:$K$9$a$P$=$l$K1[$7$?$3$H$Oe(B  
e$B$J$$$o$1$G!#e(B

e$B$G!“@.@%$5$s$4;XE&$Ne(B[ruby-core:18532]e$B$K$h$l$P!“e(Brb\_str\_modify()e$B$Ge(B  
CODERANGEe$B$r%/%j%”$7$F$$$k$N$,LdBj$G!”$=$l$,$J$1$l$P:FEYe(B  
e$BH=JL$9$kI,MW$,$J$$$N$G$O!"$H$$$&$3$H$G$7$?!#3N$+$K7W$C$F$\_$k$He(B  
e$B$=$l$C$]$$$G$9!#e(B

- e$B$3$NG’\<1$O$"$C$F$^$9$+!)e(B
- rb\_str\_modify()e$B$N!“e(B ENC\_CODERANGE\_BROKENe$B$8$c$J$1$l$Pe(B  
e$B%/%j%”$7$J$$HG$re(Bstr\_modify()e$B$H$$$&L\>A0$G:n$k!“$,$$$$$G$9$+!)e(B  
e$B!J8D?ME\*$K$Oe(Brb\_str\_modify()e$B$H$N0c$$$,J,$+$j$K$/$$$H$$$&$+!”$=$b$=$be(B  
e$B!!e(Brb\_str\_modify()e$B$rJQ$($F$7$^$C$F$$$$$N$G$O$J$$$+$H$$$&5$$be(B  
e$B!!$9$k$s$G$9$,!“$d$C$Q$j%/%j%”$9$kHG$bI,MW$J$s$G$7$g$&$+!)!Ke(B

e$B9b66@,5Ae(B (removed\_email\_address@domain.invalid)
