Python 2.7のパフォーマンスの改善



翻訳者から:一言で言えば、2015年12月にPython 2.7.11がリリースされ、CPythonインタープリターの作業が最大20%加速されます。 以下は、コードで発生した変更の本質とプロセスについて説明しているLWN.netの記事の翻訳です。 名前は、発音が元の綴りで指定されているかどうかわかりません。 翻訳のエラーや不正確さは、いつものように、プライベートメッセージで報告してください。



Python 2(具体的には、Python 2.7.xブランチ)の開発は現在、「新しい機能なし」状態になっているという事実にもかかわらず、通常の状況では事前に大きな変更がなくなるため、開発チームは、インタープリターのパフォーマンスの顕著な改善を導入するPython 3。



Intelサーバーサイドスクリプト言語最適化チームのVamsi Parasaは、Python 3で既に行われていたように、Pythonバイトコードの処理を担当するswitch



ブロックを計算されたgotoを使用するように変換するパッチ( ベンチマークを使用した提案の説明 )を提案しました CPythonのバイトコード解析ブロック(2000(!)行以上で構成される)のように、 switch



blockは、約15-20%の加速を与えます。 これは次の2つの理由で発生しますcomputed goto



switch-case



とは異なり、 computed goto



はC99 switch



必要な境界チェックを実行しません。そして、おそらくより重要なことに、CPUはそのような状況で分岐をよりよく予測できます。本質的に「高価な」操作であるコンベヤー排出の回数を減らします。



CPythonの開発者の中にはこのパッチの導入に反対しているという事実にもかかわらず、 「 パフォーマンスの改善はバグの修正ではありません 」インテルの支持を得て決定されました。



重要な理由の1つは、ブランチ2.7がパフォーマンスに関連する変更に対してオープンであるという条件で、IntelがCPythonのサポートと改善をさらに支援する用意があることを発表したという事実でした。 特に、これは、Intel開発者が「退屈な」部分(主にバグの修正と2.7ブランチの高速化)に関与している間、オープンソースコミュニティのボランティア開発者がより興味深いタスクにより多くの時間を割くことができることを意味します:

「クールなことを無料で行い、退屈だが必要なタスクのためにお金を稼ぐ方法を見つけてください(または、お金を払う人に任せてください)」-オープンソース開発への良いアプローチは、無料でやろうとするのは簡単な方法です燃え尽きる。

© ニック・コグラン



「生涯にわたる壮大な独裁者」であるヴァンロッサムはこれに同意します。特に、彼が働いているDropboxの会社が莫大なお金を節約できるからです。 彼によると、このような大企業では、Python 3への移行プロセスは非常に遅く、2.7ブランチから最新の最新バージョンへの更新は正常です。 Guido 、「 Python 3に焦点を当て、それによってコミュニティをより早く移行するように動機づける 」という考えに同意ません



Python 2.7インタープリターの作業を加速するパッチは受け入れられ( コミットされ )、2015年12月に2.7.11リリースの一部としてリリースされる予定です。Python3にはasync / awaittype notationなどの多くの新機能が導入されていますが、Python 2.7はまだ人気があり(そして現在の計画によると、少なくとも2020年までサポートされています)、このニュースは世界中の多くのPython開発者を喜ばせます。



All Articles