October 2017
Intermediate to advanced
832 pages
13h 34m
Japanese
本付録には、本文に収めるには長すぎたスクリプトのコードを完動版で示します。さらに、本書に掲載した表やテストデータを生成する際に利用したスクリプトも収録しています。
これらのスクリプトおよびコードの断片は、本書の例題コードを収録したGitHubリポジトリからも入手できます。
例A-1に、timeitモジュールを使用して表3-6の実行時間を生成したときのコードを示します。このスクリプトがやっているのは、主としてhaystackおよびneedlesのサンプルの準備と出力フォーマットの設定です。
例A-1のスクリプトを書いているとき、私はdictの性能を正しい視点から見直すことができました。スクリプトを「詳細モード」(verbose)で実行しているとき(コマンドラインオプションの-V)、得られた実行時間は表3-5の2倍近くにもなりました。しかし「詳細モード」といっても、試験用データの準備段階で4回、そして各試験が終了した時点で見つけたneedlesの数を表示するときに1回、それぞれprintを呼び出しているだけです。haystackからneedlesを実際にサーチするループの中では、出力はまったくありません。なのに、これら5回のprintには、1,000個のneedleをサーチするのと同じくらいの時間がかかっているのです。
例A-1 container_perftest.py——測定したいコレクションの組み込み型名をコマンドライン引数に指定して実行する(たとえば「container_perftest.py dict」)†1
""" Container ``in`` operator performance test ...Read now
Unlock full access