LoginSignup
1
1

More than 5 years have passed since last update.

hamlのcoffeeフィルタがおっそい

Posted at

Railsで作っているアプリの本番サーバのRailsログを読んでいた時に、大した処理もしていなさそうなのにレンダリングに200msもかかっているパーシャルがあった。

結論

HAMLにはfilterという機能があって、直接CoffeeScript、JavaScirpt、他にも色々な言語を直接HAML内に書くことができる。
結論を言ってしまうと、そのレンダリングに時間のかかるパーシャルの中で使われていたCoffeeScriptのフィルタが怪しいなぁと思い、そのCoffeScriptのフィルタをJavaScriptのフィルタに変更したところ、本来の速度になったという話。

測定する

新しくRailsアプリを作って測定してみた。コードはgithubにプッシュした次のもの。
https://github.com/ttakuru88/filter-bench

単純にviewが次のようになっている2つのページを用意した。

coffee.html.haml
%h1 :coffee

:coffee
  console.log('hi');
javascript.html.haml
%h1 :javascript

:javascript
  console.log('hi');

この2つのページにそれぞれを20回ほどアクセスして平均を取ってみると次のようになった。

回数 /coffee /javascript
1 155.8 2.1
2 150.5 1.4
3 179.1 2.2
4 161 1.7
5 160.1 1.1
6 156.4 2.9
7 165.8 1.5
8 166.5 1.2
9 167.7 3.8
10 175.5 2
11 159.5 0.9
12 165.6 1.4
13 169.6 1.2
14 159.5 2.1
15 165.7 1.2
16 168.3 1.5
17 168.1 1.6
18 174.5 1.5
19 155.3 1.2
20 165.6 1.2
平均 164.505 1.685

coffeeフィルタを使うだけで100倍近く時間かかってる :scream:

というわけで、CoffeeScriptはあまり使わなくなってくるようだし、こんなフィルタは使わないようにしたい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1