速度が求められる部分に Function#bind を導入するのはまだやめましょう
Function#bind は、ECMAScript-262 5th で導入された Prototype.js 由来のメソッドです。
uupaa.js では Function#bind の互換実装も提供していますが、現在はコメントアウトした状態でリリースしています
Function#bind と 自分でbind相当の処理を書いた場合のベンチマークを http://jsdo.it/uupaa/FunctionBind に載せました(引数を束縛する使い方についてのベンチマークです)。
Browser | ratio | Function#bind | 自分でbind | loops |
Chrome 9 dev | 335% | 171 | 51 | *100 |
Firefox 4 beta 9 | 93% | 298 | 320 | *100 |
Firefox 3.6 | ---- | ---- | 764 | *100 |
IE 8 | 824% | 1590 | 193 | *10 |
IE 9pp7 | 84% | 112 | 134 | *100 |
Opera 11 | 1897% | 1802 | 95 | *100 |
-------------------------------- | ||||
HTC Desire HD (Android 2.2) | 1844% | 166 | 9 | *1 |
IS06 (Android 2.2.1) | 816% | 204 | 25 | *1 |
iPhone 3GS (iOS 4.2.1) | 992% | 258 | 26 | *1 |
Android Dev Phone 1 (Android 1.6) | 1685% | 1415 | 84 | *1 |
HTC Desire HD - 1GHz, 768MB
IS06 - 1GHz, 400MB
iPhone 3GS - 600MHz, 256MB
Dev Phone 1 - 528MHz(384MHz), 192MB
Android は一見フリーズしたような状態になりますが、暫くすると画面が更新されます。
ベンチマークスクリプトがAndroidの場合にloop回数を考慮していなかったため修正し、再測定後のスコアに差し替えました。