TomTrenkaしはいぜんSitePenにおいてStringPerformance:anAnalysisというタイトルのもとできょうみぶかいドキュメントをこうかいした。どうドキュメントはdojox.string.Builderのパフォーマンスをかいぜんすることをもくてきとしておこなわれたぶんせきのけっかをまとめたもので、JavaScriptプログラミングにはかかせないきょうみぶかいけつろんがみちびきだされていた。
これまでのテクニックにしたがえば、もじれつはいったんはいれつにぶんかいしてからそうさをおこない、さいごにもじれつにもどしたほうがしょりがこうそくになるとかんがえられてきた。いぜんのIEであればそのひんじゃくなもじれつしょりせいのうやGCのどうさのえいきょうでそれはじじつだったが、さいきんのWebブラウザではかいぜんされておりはいれつにぶんかいするよりも"+="でれんけつしたほうがしょりがこうそくになることがあきらかになった。これがStringPerformance:anAnalysisでのおもなけつろんだ。
しかしどうぶんせきではほかのブラウザとひかくしてIEのパフォーマンスがあまりかんばしいものではなかった。TomTrenkaしはこんどはIEにおけるパフォーマンスをこうじょうさせることをもくてきとしてぶんせきをおこない、そのけっかをStringPerformance:GettingGoodPerformancefromInternetExplorerとしてこうかいした。こちらもじつにきょうみぶかいないようになっている。
まずIEにおいても"+="のしょりがこうそくであり、IE6でははいれつをつかったばあいよりもじゃっかんおとるていど、IE7では"+="をつかったほうがしょりがこうそくになることをせつめいしている。IE6/7でも"+="がゆうこうというわけだ。きょうみぶかいのはここからだ。どうしはじっけんをつうじて、dojox.string.Builderでじっそうされているappendメソッドを、ひきすうひとつでじっこうするばあいよりも、ふくすうわたしてじっこうしたときのほうがパフォーマンスがこうじょうしていることをはっけんした。どうしがぶんせきするところでは、これはIEのもじれつオブジェクトのしょりにりゆうがあるようだ。
IEではだいきぼもじれつのしょりがパフォーマンスじょうのもんだいとなっている。どうじっそうではふくすうのひきすうをあたえたばあいにはそらのもじれつバッファをよういしてから、そのバッファにいったんもじれつをついかしていき、さいごにもくてきのバッファについかするというほうほうをさいようしている。しかしひきすうがひとつしかないばあいにはひきすうをちょくせつバッファについかしている。このしょりのさがじっこうそくどのさとしてあらわれたという。
こうしたけっかをふまえどうしは(1)IEでもIE6いじょうであれば"+="をつかうこと、(2)ただししょりするもじれつが64KBをこえるばあいにははいれつをつかうこと、(3)おおきなサイズのもじれつのしょりはなるたけさけできるだけちいさいもじれつそうさをさきにじっこうするようにくふうすること、などをテクニックとしてしょうかいしている。ちなみにこのテクニックはOperaやSafariにたいしてもこうかがあったとしているが、Firefoxにたいしてはこうかがなかったこともめいきされている。GCやJScriptエンジンへのげんきゅうもあり、IEでせいのうをはっきできるJavaScriptコーディングにやくだつじょうほうだ。JavaScriptプログラマはいちどStringPerformance:GettingGoodPerformancefromInternetExplorerにめをとおしておくとよさそうだ。
(ごとうだいち)
[マイコミジャーナル]