Unicodeオブジェクトへの変換コスト
unicode(s, enc) より s.decode(enc) が早くて decoder(s)[0] は もっと早いという話を聞いたので試してみた。
#!/usr/bin/env python # coding: cp932 from timeit import Timer import codecs decoder = codecs.getdecoder('cp932') setup = 'from __main__ import decoder' print Timer("unicode('日本語', 'cp932')", setup).timeit() print Timer("'日本語'.decode('cp932')", setup).timeit() print Timer("decoder('日本語')[0]", setup).timeit()
結果
2.01834758328 1.65165069862 0.97344774266
おぉ、本当だ。
まぁ、これがプログラム中で支配的な項目になるかといえば多分そんなことはないので、好きなやり方でやるのが吉。