s.decode('utf8') よりも unicode(s, 'utf-8') の方が速い

http://groups.google.com/group/comp.lang.python/browse_thread/thread/314a3043ea63319f/

unicode vs s.decode

unicodeはLOAD_GLOBALで、s.decodeはLOAD_ATTRでスタックに積まれる。で、LOAD_GLOBALの方が速い。
さらに言えば、何度もデコードを行うのであれば u = unicode のようにローカル変数にするとさらに速くなる。LOAD_ATTRやLOAD_GLOBALは最適化で消すことが出来ないので、明示的にローカル変数に束縛することはCPythonに限らず有効な手法だ。

'utf8' vs 'utf-8'

単なる1タイプの問題だけど、内部的には 'utf-8' が利用されており、 'utf8' を使うと 'utf-8' だと判断するのに1クッション必要になる。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。