From: Kouhei Sutou Date: 2008-12-28T14:56:24+09:00 Subject: [ruby-dev:37630] Re: テスト所要時間ランキング 須藤です。 In <4956A97B.7000107@airemix.jp> "[ruby-dev:37628] テスト所要時間ランキング" on Sun, 28 Dec 2008 07:17:19 +0900, "NARUSE, Yui" wrote: > test-all における各々のテストの所要時間をランキングにしてみました。 > 見たところ、長時間かかるもののうちのいくつかは GC 絡みだったりして、 > 短縮は難しそうだったりもしますが、いくつかは短くなりそうに見えます。 RSS Parser関連のものは組み合わせの数が増えているので遅くなっ ているようにみえます。それぞれが微妙に違うテストになっている ので数を減らすのは難しそうです。RSS Parser自体の処理を高速化 できればテストも速くなりそうな気はします。 > 5.48 RSS::TestDublinCore#test_parser: 5.48 s: . 252回パースのテストをしています。1回あたり0.02秒くらいかかっ ているといるということになります。それぞれのテストでは2回ずつ RSS::Parserでフィードをパースしているので、パースの時間を短く できればテストも速くなりそうな気はします。 内訳: RSS 1.0, RSS 2.0, Atom(ルートがのものとのもの) のフィードのうち、Dublin Coreの要素をとれる要素それぞれに対 して、Dublin Coreの要素14種類をパースできるかをテストしてい ます。 Dublin Coreの要素をとれる要素が全部で9個あって、それぞれ14回 テストするので、9 * 14 = 126回パースするテストをしています。 また、それぞれについて、後方互換性APIのテストもしているので さらに倍の126 * 2 = 252回パースするテストをしています。 > 4.95 RSS::TestMakerAtomFeed#test_link: 4.95 s: . > 4.58 RSS::TestMakerAtomEntry#test_link: 4.58 s: . それぞれ96回link要素作成のテストをしています。1回あたり0.05秒 くらいかかっているということになります。それぞれのテストでは 4回ずつRSS::Makerでフィードを作っているので、フィード作成時 間を短くできればテストも速くなりそうな気はします。 内訳: Atomにはルートがのものとのもので2種類あります。 のものにはlink要素をとれる要素が3種類あり、のも のにも3種類あります。また、link要素には5つの省略可能な属性が あります。 そのため、link要素をとれる要素それぞれ(3 + 3 = 6)について、5 つの省略可能な属性のすべての組み合わせをテストしている (Σ_i=0^5 5Ci = 32; 表記法があっているかはわからない)ので、 全部で6 * 32 = 192回link要素のテストをします。