スポンサーリンク

2016年7月18日月曜日

Android から FloatMath クラスが消えた

Android SDK の FloatMath クラスは、Java の Math クラスの代替えです。Math クラスは多くのメソッドが double ベースで実装されているのに対し、FloatMath は float ベースで実装されているので、より高速に処理することができる、と多くの所で解説されています。ゲームなどはほんとんどの場合 float 精度で十分なので重宝していました。



この FloatMath クラスが API23 から消えてしまいました。正確に言うと、クラス自体は残っていますが、中身は空っぽです。公式な解説がどこかにあるかと探したのですが、見つかりませんでした。単に Javadoc の中に以下のように書いてあります。

Historically these methods were faster than the equivalent double-based Math methods. On versions of Android with a JIT they became slower and have since been re-implemented to wrap calls to Math. Math should be used in preference.

要は、昔は Math の代替えとして高速だったけれど、Android に JIT が導入されてから、逆に遅くなってしまった。今は内部的には単に Math を呼び出しているだけなので、直接 Math を使うべきである、ということです。なんと随分前から Math を呼び出しているだけだなんてまったく知りませんでした。何となく早くなった気がして、すっかり騙されてました。

API23 以降にアップデートする場合、自分のアプリの中で使っているのであれば地道に直していけばいいのですが、他人のライブラリの中で使われていたりするとちょっと厄介です。API22以下を使うか、作者にお願いして修正してもらうようにしましょう。

0 件のコメント :

コメントを投稿