入力データから、指定されたデータサイズのデータを切り出す切り出し処理手段と、前記データサイズのデータに対し、キャッシュを用いて所定処理を行うプログラム処理手段と、前記データサイズにおける前記キャッシュのキャッシュ利用効率を計測する性能計測手段と、前記データサイズにおける前記キャッシュ利用効率の良否を示す指標値を算出して、当該良否を判断するデータサイズ判断手段と、前記キャッシュ利用効率が良い場合には当該データサイズを最適データサイズとして決定し、前記キャッシュ利用効率が良くない場合には、前記キャッシュ利用効率が良くなるまで他のデータサイズを指定して前記切り出し手段に出力するデータサイズ決定手段と、を備え、前記プログラム処理手段は、前記入力データから切り出された前記最適データサイズのデータに対して前記所定処理を行うバッチ処理装置。前記データサイズ判断手段は、指定された前記データサイズにおけるキャッシュ利用効率と、その近傍のデータサイズにおけるキャッシュ利用効率との差分を前記所定のデータサイズにおける前記キャッシュ利用効率で除した値当該値の逆数を前記指標値として算出する請求項1に記載のバッチ処理装置。前記データサイズ決定手段は、データサイズに対するキャッシュ利用効率が極大となるデータサイズを探索するアルゴリズムを実行して前記他のデータサイズを指定する請求項1乃至2のいずれかに記載のバッチ処理装置。入力データから、指定されたデータサイズのデータを切り出す切り出し処理ステップと、前記データサイズのデータに対し、キャッシュを用いて所定処理を行うプログラム処理ステップと、前記データサイズにおける前記キャッシュのキャッシュ利用効率を計測する性能計測ステップと、前記データサイズにおける前記キャッシュ利用効率の良否を示す指標値を算出して、当該良否を判断するデータサイズ判断ステップと、前記キャッシュ利用効率が良くない場合には、前記キャッシュ利用効率が良くなるまで他のデータサイズを指定して前記切り出し処理ステップを実行し、前記キャッシュ利用効率が良い場合には当該データサイズを最適データサイズとして決定して出力するデータサイズ決定ステップと、前記入力データから切り出された前記最適データサイズのデータに対して前記所定処理を行う前記プログラム処理ステップと、をコンピュータに実行させるバッチ処理プログラム。指定された前記データサイズにおけるキャッシュ利用効率と、その近傍のデータサイズにおけるキャッシュ利用効率との差分を前記所定のデータサイズにおける前記キャッシュ利用効で除した値当該値の逆数を前記指標値として算出する前記データサイズ判断ステップを前記コンピュータに実行させる請求項4に記載のバッチ処理プログラム。データサイズに対するキャッシュ利用効率が極大となるデータサイズを探索するアルゴリズムを実行して前記他のデータサイズを指定する前記データサイズ決定ステップを前記コンピュータに実行させる請求項4乃至5のいずれかに記載のバッチ処理プログラム。入力データから、指定されたデータサイズのデータを切り出し、前記データサイズのデータに対し、キャッシュを用いて所定処理を行い、前記データサイズにおける前記キャッシュのキャッシュ利用効率を計測し、前記データサイズにおける前記キャッシュ利用効率の良否を示す指標値を算出して、当該指標値を基に当該良否を判断し、前記キャッシュ利用効率が良くない場合には、前記キャッシュ利用効率が良くなるまで他のデータサイズを指定して前記データを切り出し、前記キャッシュ利用効率が良い場合には当該データサイズを最適データサイズとして決定して出力し、前記入力データから切り出された前記最適データサイズのデータに対して前記所定処理を行うバッチ処理方法。指定された前記データサイズにおけるキャッシュ利用効率と、その近傍のデータサイズにおけるキャッシュ利用効率との差分を前記所定のデータサイズにおける前記キャッシュ利用効で除した値当該値の逆数を前記指標値として算出する請求項7に記載のバッチ処理方法。データサイズに対するキャッシュ利用効率が極大となるデータサイズを探索するアルゴリズムを実行して前記他のデータサイズを指定する請求項7乃至8のいずれかに記載のバッチ処理方法。しかし、バッチ処理においては、処理するデータサイズがキャッシュサイズより大きく、キャッシュ上のデータが追い出されてしまうため、キャッシュ利用効率が悪く、実行時間が長くなってしまうことがあるという課題がある。上述の技術ではこの課題を解決できない。そこで、本発明は、実行時間を短くすることのできるバッチ処理装置、方法、プログラムを提供することを目的とする。かかる目的を達成するため、本発明の一形態は、バッチ処理装置であって、入力データから、指定されたデータサイズのデータを切り出す切り出し処理手段と、前記データサイズのデータに対し、キャッシュを用いて所定処理を行うプログラム処理手段と、前記データサイズにおける前記キャッシュのキャッシュ利用効率を計測する性能計測手段と、前記データサイズにおける前記キャッシュ利用効率の良否を示す指標値を算出して、当該指標値を基に当該良否を判断するデータサイズ判断手段と、前記キャッシュ利用効率が良い場合には当該データサイズを最適データサイズとして決定し、前記キャッシュ利用効率が良くない場合には、前記キャッシュ利用効率が良くなるまで他のデータサイズを指定して前記切り出し手段に出力するデータサイズ決定手段と、を備え、前記プログラム処理手段は、前記入力データから切り出された前記最適データサイズのデータに対して前記所定処理を行う。また、本発明は、入力データから、指定されたデータサイズのデータを切り出す切り出し処理ステップと、前記データサイズのデータに対し、キャッシュを用いて所定処理を行うプログラム処理ステップと、前記データサイズにおける前記キャッシュのキャッシュ利用効率を計測する性能計測ステップと、前記データサイズにおける前記キャッシュ利用効率の良否を示す指標値を算出して、当該指標値を基に当該良否を判断するデータサイズ判断ステップと、前記キャッシュ利用効率が良くない場合には、前記キャッシュ利用効率が良くなるまで他のデータサイズを指定して前記切り出し処理ステップを実行し、前記キャッシュ利用効率が良い場合には当該データサイズを最適データサイズとして決定して出力するデータサイズ決定ステップと、前記入力データから切り出された前記最適データサイズのデータに対して前記所定処理を行う前記プログラム処理ステップと、をコンピュータに実行させるバッチ処理プログラムを提供する。また、本発明は、入力データから、指定されたデータサイズのデータを切り出し、前記データサイズのデータに対し、キャッシュを用いて所定処理を行い、前記データサイズにおける前記キャッシュのキャッシュ利用効率を計測し、前記データサイズにおける前記キャッシュ利用効率の良否を示す指標値を算出して、当該指標値を基に当該良否を判断し、前記キャッシュ利用効率が良くない場合には、前記キャッシュ利用効率が良くなるまで他のデータサイズを指定して前記データを切り出し、前記キャッシュ利用効率が良い場合には当該データサイズを最適データサイズとして決定して出力し、前記入力データから切り出された前記最適データサイズのデータに対して前記所定処理を行うバッチ処理方法を提供する。本発明は、実行時間を短くすることのできるバッチ処理装置、方法、プログラムを提供する。以下、本発明の実施の形態について、図面を用いて説明する。すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。なお、各実施形態の装置等を構成する各部は、制御部、メモリ、メモリにロードされたプログラム、プログラムを格納するハードディスク等の記憶ユニット、ネットワーク接続用インターフェースなどからなり、ハードウェアとソフトウェアの任意の組合せによって実現される。そして特に断りのない限り、その実現方法、装置は限定されない。また、制御部はCPUCentralProcessingUnitなどからなり、オペレーティングシステムを動作させて装置等の全体を制御するとともに、例えばドライブ装置などに装着された記録媒体からメモリにプログラムやデータを読み出し、これに従って各種の処理を実行する。記録媒体は、例えば光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、半導体メモリ等であって、コンピュータプログラムをコンピュータが読み取り可能に記録する。また、コンピュータプログラムは、通信網に接続されている図示しない外部コンピュータからダウンロードされても良い。また、各実施形態の説明において利用するブロック図は、ハードウェア単位の構成ではなく、機能単位の構成を示している。これらの機能ブロックはハードウェア、ソフトウェアの任意の組み合わせによって実現される。また、これらの図においては、各実施形態の構成部は物理的に結合した一つの装置により実現されるよう記載されている場合もあるが、その実現手段はこれに限定されない。すなわち、装置等は、二つ以上の物理的に分離した装置を有線または無線で接続した複数の装置により実現されても良い。また、各構成部が物理的に分離した2つ以上の装置等として記載されている場合もあるが、その実現手段はこれに限定されない。すなわち、装置等は、ハードウェア、ソフトウェアを任意に組み合わせて物理的に結合した一つの装置により実現されても良い。<実施形態1>まず、バッチ処理装置の基本的な構成について説明する。図1に示すように、バッチ処理装置100は、切り出し部101と、指定プログラム処理部102と、出力部103と、実行制御部104とから構成されている。このような構成を有するバッチ処理装置100は概略つぎのように動作する。切り出し部101は、巨大な入力データを所定サイズコミット間隔ごとに切りだして指定プログラム処理部102に転送する。指定プログラム処理部102は、切り出されたデータに対してシステム開発者が記述した指定プログラムの処理を行い、結果を出力部103に転送する。出力部103は、指定プログラム処理部102の結果をファイルなどに出力する。実行制御部104は、切り出し部101で切り出す入力データが終端に達したかを判断し、終端に達していなければ再度切り出し部101と指定プログラム処理部102と出力部103とを実行するように制御する。上述のコミット間隔は、システム開発者等がシステム要件を考慮して決定する。例えば、コミット間隔は、バッチ処理装置100等の障害頻度と、障害からの回復時間とのトレードオフに基づいて決定される。コミット間隔は出力部103において順守される値である。以上を踏まえ、本発明の第1の実施形態の概要について図面を参照して説明する。[概要]図2を参照すると、本発明の第1の実施の形態におけるバッチ処理装置100は、切り出し部101と、指定プログラム処理部102と、出力部103と、実行制御部104と、データサイズ決定部105と、データサイズ判断部107と、性能計測部106とを含む。切り出し部101は、入力されたデータから、実行制御部104によって通知されるデータサイズ指定データサイズのデータを切り出す。このデータサイズは、データサイズ決定部105が決定する。指定プログラム処理部102は、切り出し部101が切り出したデータを入力として、実行制御部104から通知されるプログラムを処理する。出力部103は、指定プログラム処理部102が処理したデータを入力として、実行制御部104から通知されるプログラム開始時に指示されたデータサイズコミット間隔のデータを出力する。実行制御部104は、切り出し部101と指定プログラム処理部102と出力部103の実行順序を制御する。また、実行制御部104は、切り出し部101に指定データサイズを通知する。また、実行制御部104は、指定プログラム処理部102に、処理させるプログラムを通知する。また、実行制御部104は、出力部103にコミット間隔を通知する。データサイズ決定部105は、データサイズ判断部107から指示を受けて、後述するデータサイズ決定アルゴリズムに従って指定データサイズを決定し、実行制御部104とデータサイズ判断部107に、指定データサイズを通知する。データサイズ判断部107は、指定データサイズが、キャッシュ効率の良いデータサイズであるか否かを判断する。データサイズ判断部107は、例えば、後述するデータサイズ判断アルゴリズムに従って、データサイズ決定部105から通知された指定データサイズと、性能計測部106から通知された性能値と、からなる複数の組に基づいて、指定データサイズにおけるキャッシュ効率の良否を判断する。性能計測部106は、指定データサイズのデータに対し、プログラム中で指定された処理部分の性能を計測する。また、性能計測部106は、計測した結果である性能値をデータサイズ判断部107に通知する。次に、図3および図4のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。まず、バッチ処理装置100は、キャッシュ効率の良いデータサイズを探索する図3のステップ301。具体的には、バッチ処理装置100は、図3のステップ301において、図4のフローチャートに示す処理を行ない、キャッシュ効率の良いデータサイズを探索する。図4では、まず、データサイズ判断部107が、現在のデータサイズのキャッシュの効率が良いか否かを既存の方法で判断する図4のステップ401。なお、データサイズ判断部107がキャッシュ効率を判断する一つの方法であるデータサイズ判断アルゴリズムについては後述する。データサイズ判断部107がキャッシュ効率が良いと判断した場合ステップ401、Noは、処理は図3のステップ302へ遷移し、キャッシュ効率が良いと判断しない場合ステップ401、Yesは、処理は図4のステップ402へ遷移する。次に、データサイズ決定部105は、入力データから切り出すデータサイズを決定する図4のステップ402。ここで、データサイズ決定部105は、後述するデータサイズ決定アルゴリズムに従ってデータサイズを決定する。決定されたデータサイズ指定データサイズは実行制御部104とデータサイズ判断部107に通知される。次に、性能計測部106は、以下の処理における指定データサイズのキャッシュ効率例えば、実行時間、キャッシュミス回数、キャッシュミス率、キャッシュヒット回数、キャッシュヒット率等の計測を開始する図4のステップ403。切り出し部101は、入力データから、図4のステップ402で決定された指定データサイズのデータの切り出しを行う図4のステップ404。次に、指定プログラム処理部102は、切り出し部101によって切り出されたデータに対して、実行制御部104から指定されたプログラムによる処理を行う図4のステップ405。次に、性能計測部106は、性能の計測を終了する図4のステップ406。性能計測部106は、計測された性能値をデータサイズ判断部107に通知する。次に、実行制御部104は、これまでに切り出されたデータのデータサイズがコミット間隔に達しているかを判断する図4のステップ407。データサイズがコミット間隔に達していなければ、処理は図4のステップ401へ遷移する。データサイズがコミット間隔に達している場合、出力部103は、コミット間隔分のデータサイズの出力を行う図4のステップ408。その後、処理は図4のステップ401へ遷移する。バッチ処理装置100は、図4のステップ401からステップ408によって、プログラムを動作させながらデータサイズと性能値の複数の組み合わせを取得し、これらの複数の組み合わせを基にキャッシュ効率の良いデータサイズを探索し、キャッシュ効率の良いデータサイズ最適データサイズを決定することができる。そして、バッチ処理装置100は、最適データサイズを探索した以降は、図3のフローを順次行なう。これにより、バッチ処理装置100は、入力データから最適データサイズを切り出してコミット間隔に達するまで順次処理を行い、コミット間隔に達した後にまとめて出力部103がデータ出力を行なう。すなわち、まず、キャッシュ効率の良い最適データサイズの探索後ステップ401、Yes、処理は図3のステップ302へ遷移する。次に、切り出し部101は、入力データから、図3のステップ301で決定された最適データサイズのデータ切り出しを行う図3のステップ302。次に、指定プログラム処理部102は、切り出し部101によって切り出されたデータに対して、実行制御部104から指定されたプログラムによる処理を行う図3のステップ303。次に、実行制御部104は、これまでに切り出されたデータのデータサイズがコミット間隔に達しているかを判断する図3のステップ304。データサイズがコミット間隔に達していれば、処理は図3のステップ305に遷移する。データサイズがコミット間隔に達していなければ、処理は図3のステップ302へ遷移する。コミット間隔に達している場合には、出力部103は、コミット間隔分のデータサイズの出力を行う図3のステップ305。次に、実行制御部104は、切り出し部101が切り出したデータサイズが入力データの終端まで達したかを判断する図3のステップ306。入力データの終端に達していれば、処理は終了する。入力データの終端に達していなければ、処理は図3のステップ302へ遷移する。バッチ処理装置100は、図3のステップ301からステップ306によって、キャッシュ効率良くプログラムの実行を行なうことができる。これは、バッチ処理装置100が、キャッシュ効率の良いデータサイズである最適データサイズを図4のフローで決定した以降、切り出し部101が最適データサイズでデータを切り出し、最適データサイズで切り出されたデータに対して指定プログラム処理部102が処理することでキャッシュ効率を高めることができるためである。また、指定プログラム処理部102の結果がコミット間隔に達した時に出力部103が出力することで、出力部103ではシステム要件で決められたコミット間隔分のデータの出力をすることができる。[具体例]次に、具体例を用いて本発明の構成および動作の一例を説明する。図5は上述のバッチ処理装置100の詳細な構成図であるバッチ処理システムの一例である。本例では、一般的なサーバ上でJava登録商標バッチ処理フレームワークSpringBatchを用いた場合の例を説明する。バッチ処理システムは、バッチ処理装置600と、フレームワークを利用するシステム開発者によって作られたシステム開発者管理データ格納部620とから構成される。本例では、バッチ処理フレームワークはJava言語で作られたSpringBatchであり、キャッシュ効率の良いデータサイズを探索するための機能が追加されているものとする。バッチ処理装置600は、初期化部601、実行制御部602、データ読み込み部603、データ処理部604、バッファ出力部605、データ出力部606、データサイズ決定部608、データサイズ判断部609、性能計測部610を含む。上述のバッチ処理装置100の構成と比較すると、データ読み込み部603が切り出し部101に対応し、データ処理部604が指定プログラム処理部102に対応し、出力部103がデータ出力部606に対応する。また、実行制御部104と、データサイズ決定部105と、データサイズ判断部107と、性能計測部106は、それぞれ実行制御部602と、データサイズ決定部608と、データサイズ判断部609と、性能計測部610に対応する。システム開発者管理データ格納部620は、設定ファイル621、入力データ622、データ読み込みクラス623、データ処理クラス624、バッファ出力クラス626、データ出力クラス625、データクラス627を格納する。本例では、データ読み込みクラス623、データ処理クラス624、バッファ出力クラス626、データ出力クラス625、データクラス627は、Java言語で作られたクラスファイルである。バッチ処理装置600の初期化部601は、システム開発者管理データ格納部620の設定ファイル621を読み込む。初期化部601は、設定ファイル621からコミット間隔、入力ファイル622、データ読み込み部603で処理するデータ読み込みクラス623、データ処理部604で処理するデータ処理クラス624、バッファ出力部605で処理するバッファ出力クラス625、プログラムで扱うデータクラス627を読み込む。また、初期化部601は、コミット間隔を実行制御部602、データサイズ決定部608に指示する。また、初期化部601は、入力ファイル622をデータ読み込み部603で読み込むデータとして設定する。また、初期化部601は、データ読み込みクラス623を、読み込み部603で処理するクラスとして設定する。また、初期化部601は、データ処理クラス624を、データ処理手段604で処理するクラスとして設定する。また、初期化部601は、バッファ出力クラス626を、バッファ出力手段605で処理するクラスとして設定する。また、初期化部601は、データ出力クラス625を、データ出力手段606で処理するクラスとして設定する。実行制御部602は、データ読み込み部603、データ処理部604、バッファ出力部605、データ出力部606に対して処理の繰り返し回数の制御や処理順序の制御を行なう。例えば、実行制御部602は、コミット間隔またはデータサイズ決定部608から指示された繰り返し回数だけデータ読み込み部603、データ処理部604、バッファ出力部605を実行させることで処理の繰り返し回数の制御を行なう。また、実効制御部602は、データ読み込み部603が入力データの終端まで読み込んだ場合はデータ出力部606の実行後にプログラムを終了させる。また、実効制御部602は、データサイズ決定部608等がキャッシュ効率の良いデータサイズを探索する場合に、データ読み込み部603、データ処理部604、バッファ出力部605の実行を制御し、バッファ出力したデータサイズの和がコミット間隔に達した時はデータ出力部606を実行させ、コミット間隔に達していない場合はデータ読み込み部603に戻って実行を行わせる。このように、実効制御部602は、処理順序の制御等を行なう。データ読み込み部603は、上述の切り出し部103に相当し、実行制御部602から指示されたサイズのデータを入力ファイル622から読み込む。データ読み込み部603は、読み込んだそれぞれのデータをデータクラス627のインスタンスとして生成する。データ読み込み部603は、データ読み込み部603の結果をデータ処理部604へ転送する。データ処理部604は、データ読み込み部603の処理結果に対してデータ処理クラス624の処理を行う。データ処理部604は、データ処理部604の処理結果をバッファ出力部605へ転送する。バッファ出力部605は、データ処理部604の処理結果に対してバッファへの出力を行う。また、バッファ出力部605は、バッファ出力部605の処理結果をデータ出力部606へ転送する。データ出力部606は、バッファ出力部605の処理結果をファイル等へまとめて出力する。データ出力部606は、コミット間隔分のデータをまとめて出力する。データ出力部606は、その後、バッファを空にする。データサイズ決定部608は、データサイズを、例えば後述のデータサイズ決定アルゴリズムで決定し、決定したデータサイズを実行制御部602とデータサイズ判断部609へ指示する。データサイズ判断部609は、例えば後述のデータサイズ判断アルゴリズムでデータサイズを判断する。データサイズ判断アルゴリズムは、データサイズ決定部608で決められたデータサイズと性能計測部610が得た性能値との複数の組から、キャッシュ効率が良いデータサイズを判断する。データサイズ判断部609は、キャッシュ効率が良いと判断しない場合には、データサイズを更新するようにデータサイズ決定部608へ指示する。性能計測部610は、指定データサイズのデータに対し、プログラム中の指定された部分の性能を計測する。性能計測部610は、本例では、性能計測部610は、データ読み込み部603、データ処理部604、バッファ出力部605の一連の処理の実行時間を計測する。性能計測部610は、計測した結果の性能値を、データサイズ判断部609へ通知する。設定ファイル621は、本例ではXMLExtensibleMarkupLanguageフォーマットのテキストデータである。図6は、設定ファイル621の一部を示す図である。図6では、コミット間隔commitintervalが10000に設定されている。また、ファイル読み込みクラスitemReaderParentとして、orgspringframeworkbatchitemfileFlatFileItemReaderが指定されている。また、内部の一行のデータの読み込み方法としてlineMapperが指定されている。また、一行のデータのトークンへの分割方法と変数への入れ込み方法DefaultLineMapperが指定されている。また、トークンへの分割用のクラスとして、orgspringframeworkbatchitemfiletransformDelimitedLineTokenizerが指定されている。更に、区切り文字としてカンマが指示され、トークンへ分割された一要素目を設定するための変数名としてname、二要素目を設定するための変数名としてcreditが指定されている。トークンへ分割された各要素をインスタンスの変数へ設定するクラスとしてorgspringframeworkbatchitemfilemappingBeanWrapperFieldSetMapperが指定されている。また、入力データを設定するクラスとして、orgspringframeworkbatchsampledomaintradeCustomerCreditが指定されている。データ処理クラス624として、orgspringframeworkbatchsampledomaintradeinternalCustomerCreditIncreaseProcessorが指定されている。データ出力クラス625として、orgspringframeworkbatchitemfileFlatFileItemWriterが指定されている。区切り文字としてカンマが用いられ、変数nameと変数creditのデータが一行のデータとして出力されるように指定されている。入力データ622は、本実施例ではCSVCommaSeparatedValues形式のテキストデータである。図7は、本実施例における図5の入力ファイル622の一部を示す図である。一行のデータは、カンマ区切りで2つのトークンに分けられた文字列となっている。本例では、入力ファイルは1億行あると仮定する。データクラス627は、データが保持する変数と処理内容を保持するクラスである。図8は、本例でのプログラム中で扱うデータ用のクラスCustomerCreditのJavaプログラムを示す。データクラス627は、インスタンス変数として、int型の変数id、String型の変数name、BigDecimal型の変数creditを持つ。メソッドincreaseCreditByは、BigDecimal型の変数sumを引数として、新しくCustomerCreditインスタンスを返す。メソッドincreaseCreditByは、新しくCusotmerCreditインスタンスを生成し、元のインスタンス変数creditの値にsumを加算した値を新しいインスタンスの変数creditとし、変数nameと変数idは元のインスタンス変数と同一の値とした新しいインスタンスを返す。データ読み込みクラス623はデータ読み込みを行うクラスである。図9は、本例でのデータ読み込みクラス623の一部を示す図である。クラスFlatFileItemReaderには、データ読み込みのためのメソッドdoReadとメソッドreadLineとがある。メソッドdoReadは、メソッドreadLineによってデータを読み込み、メソッドlineMappermapLineによって、読み込まれたデータを、指定されたクラスのインスタンスで初期化して返す。本例では、図7の入力ファイルから、一行のデータが読み出され、カンマで区切られた一つ目のトークンが図8で示すクラスCustomerCreditのインスタンス変数nameに代入され、二つ目のトークンが変数creditに代入される。データ処理クラス624は、指定された処理を行うクラスである。図10は、本例でのデータ処理クラス624の一部を示す図である。本例では、クラスCustomerCreditIncreaseProcessorのメソッドprocess内でCustomerCreditインスタンスのメソッドincreaseCreditByを呼び出す。バッファ出力クラス626は、指定されたバッファ出力を行うクラスである。図11は、本例でのバッファ出力クラス626の一部を示す図である。本例では、クラスFlatFileWriterのメソッドwrite内でバッファ出力が行われる。バッファ出力クラス626は、データ処理部604の処理結果を1つずつ改行付きの文字列へ変換し、バッファへ追加する。データ出力クラス625は、バッファに存在するデータをファイルに出力するクラスである。図12と図13は、図6~11の設定ファイル621等を入力としたときのバッチ処理装置600の実行フローの一例を示す図である。図16は本例でのデータ読み込み部603、データ処理部604、バッファ出力部605の一連の処理におけるデータサイズと1データ当たりの実行時間の関係を示す図である。図16は、横軸にデータサイズ、縦軸に1データ当たりの実行時間を示している。本例では、データサイズと1データあたりの実行時間が図16のような結果となる場合を例として実行フローを説明する。図12の実行フローでは、まず、初期化部601による初期化が行われるステップ701。初期化部601は設定ファイル621を読み込む。図6の設定ファイル621に記述された内容から、データ読み込みクラス623、データ処理クラス625、バッファ出力クラス626、データ出力クラス624、データクラス627、入力ファイル622図7のCSVファイルが設定され、コミット間隔として10000が設定される。次に、バッチ処理装置600が、キャッシュ効率の良いデータサイズの探索を行うステップ702。図13は、本例でのキャッシュ効率の良いデータサイズの探索ステップ702の詳細なフローを示す図である。まず、データサイズ判断部609は、現在のデータサイズのキャッシュ効率が良いか否かの判断を行う図13のステップ711。ここで、データサイズ判断部609は、データサイズ判断アルゴリズム図14参照等によって、現在のデータサイズのキャッシュ効率が良いか否かを判断する。データサイズ判断部609が、現在のデータサイズのキャッシュ効率が良いと判断しない場合ステップ711、Noには、処理はステップ712へ遷移し、キャッシュ効率が良いと判断した場合ステップ711、Yesには処理は図12のステップ703へ遷移する。ここで、データサイズ判断部609がステップ711で行なうデータサイズ判断アルゴリズムについて図14を用いて説明する。データサイズ判断アルゴリズムは、あるデータサイズにおけるキャッシュ効率が極大値あるいは極大値に近い値であるか否かを判断するアルゴリズムである。なお、性能計測部106が性能値としてキャッシュヒット率等を測定する場合には、性能値が高い方がキャッシュ効率が良いことになる。これに対し、図16の例では、性能値として、1データ当たりの実行時間が測定されているため、性能値が小さい方がキャッシュ効率が良いことになる。すなわち本例では、データサイズ判断アルゴリズムは、現在のデータサイズが、図16に示すグラフにおいて極小値あるいは極小値に近い性能値この例では1データ当たりの実行時間に対応するデータサイズであるか否かを判断するアルゴリズムである。まず、データサイズ判断部609は、これまでに得ているデータサイズと性能値との組を用いて、後述する性能指標の算出が可能ステップ801、Yesである場合には、ステップ802の処理を行い、算出が可能でない場合には現在のデータサイズはキャッシュ効率が良いデータサイズでは無いと判定するステップ801、No。データサイズ判断部609は、例えば、最小の性能値を持つデータサイズが存在し、かつ、最小の性能値を持つデータサイズより小さいデータサイズのデータが存在し、かつ、最小の性能値を持つデータサイズより大きいデータサイズのデータが存在する場合には、性能指標が算出可能であると判断する。ステップ802において、データサイズ判断部609は、これまでのデータから性能指標を算出するステップ802。具体的には、まず、データサイズ判断部609は、最小の性能値を持つデータサイズの大小近傍の2つのデータサイズとその性能値との組を取得する。この時の最小の性能値を持つ組のデータサイズをDmin、性能値をPminとする。データサイズ判断部609は、Dminより大きく、最も近いデータサイズをDbig、Dbigにおける性能値をPbigとする。データサイズ判断部609は、Dminより小さく、最も近いデータサイズDsmall、Dsmallにおける性能値をPsmallとする。次に、データサイズ判断部609は、PbigとPsmallの小さい値を取得し、Pnearとする。最後に、データサイズ判断部609は、PnearとPminの差の絶対値をPminで除算した結果あるいはその逆数を性能指標とする。性能指標は、最小性能値Pminとその近傍のデータサイズにおけるPnearとの差が、Pminに対してどれほど差があるのかを表し、当該値が小さければ性能指標が上述の逆数である場合には大きければ、Pminは極小値に近い値である。次に、データサイズ判断部609は、前ステップで算出した性能指標が閾値未満性能指標が上述の逆数である場合には閾値以上であればステップ803、Yes、Dminをキャッシュ効率の良いデータサイズと判断し、閾値以上性能指標が上述の逆数である場合には閾値未満であればステップ803、No、データサイズ判断部609は、Dminをキャッシュ効率が良いデータサイズとは判断しない。これらにより、データサイズ判断部609は、データサイズDminが、キャッシュ効率の良いデータサイズであるか否かを判断することができる。データサイズ判断部609によって、キャッシュ効率が良いと判断されたデータサイズを最適データサイズと呼ぶ。なお、データサイズ判断部609は、性能指標が閾値未満である場合ステップ803、Yesには、次のステップ804の処理を行っても良い。すなわち、データサイズ判断部609は、コミット間隔を、最適データサイズで割ったときに割り切れるか商が自然数となり余りが生じないか否かを判断するステップ804。もし、割り切れれば、データサイズ判断部609は、データサイズを現在の最適データサイズに決定する。割り切れなければ処理はステップ805へ遷移する。ステップ805において、データサイズ判断部609は、最適データサイズ近傍でコミット間隔を割り切れるデータサイズを探索し、当該データサイズをキャッシュ効率が良い新たな最適データサイズとして最終的に決定するステップ805。なお、データサイズ判断部609が最適データサイズ近傍でコミット間隔を割り切れるデータサイズを探索した後、バッチ処理装置600は、当該データサイズにおけるキャッシュ効率が良いか否かを再検証するために、当該データサイズに対してステップ712~717の処理を行って、再度最適データサイズの探索を行なっても良い。次に、データサイズ判断部609によって、現在のデータサイズがキャッシュ効率の良いデータサイズではないと判断された場合図13のステップ711、No、データサイズ決定部608がデータサイズを決定する方法について説明する。データサイズ決定部608は、データサイズ決定アルゴリズム図15参照に従って切り出すデータサイズを決定する図13のステップ712。データサイズ決定アルゴリズムは、図15のステップ901から907で実行される。本例におけるデータサイズ決定アルゴリズムは、データサイズに対する性能値が極小値となるようなデータサイズを探索するアルゴリズムである。以下の方法はその1例であり、これに限定されない。データサイズ決定部608は、これまでに得ているデータサイズと性能値との組データサイズと、当該データサイズのデータに対して性能計測部610が性能を測定したときの性能値との組=データサイズ、性能値の数が2つ以上あればステップ903の処理を行い、1つ以下であればステップ902の処理を行うステップ901。ステップ902において、データサイズ決定部608は、組の数が0ならデータサイズをコミット間隔の1/2と決定し、組の数が1つならデータサイズをコミット間隔の1/4と決定して、当該データサイズを出力してステップ713に進むステップ902。データサイズ決定部608は、ここで決定したデータサイズDmを図示しない記憶部に格納する。一方、ステップ903において、データサイズ決定部608は、これまで取得したデータサイズと性能値の組の中で最小の性能値最小性能値をもつ組を取得するステップ903。次に、データサイズ決定部608は、ステップ903で取得した組のデータサイズの近傍に、当該データサイズよりも大きいデータサイズと当該データサイズよりも小さいデータサイズが存在するかを判定するステップ904。存在しない場合、処理はステップ905へ遷移する。存在する場合、処理はステップ906へ遷移する。ステップ905において、データサイズ決定部608は、最小性能値との組であるデータサイズD2とすると、その近傍に存在する大小どちらかのデータサイズD1とするとの差D2-D1を求め、当該差の値が正である場合にはデータサイズの増加方向に、負である場合にはデータサイズの減少方向に、新たなデータサイズを設定するステップ905。例えば、データサイズ決定部608は、D2>D1の場合は、次のデータサイズをD2D2-D1とし、D2<D1の場合は、次のデータサイズをD2/2と設定する。データサイズ決定部608は、設定されたデータサイズDmを図示しない記憶部に格納する。その後、処理はステップ907に遷移する。一方、ステップ906において、データサイズ決定部608は、ステップ903で取得した最小性能値と組のデータサイズに対して、当該データサイズの大小それぞれ最近傍に存在する各々のデータサイズとそれらの性能値とからなる組を取得する。この時の最小の性能値を持つ組のデータサイズをDmin、性能値をPminとする。Dminより大きく、最も値の近いデータサイズの組のデータサイズをDbig、性能値をPbigとする。Dminより小さく、最も近いデータサイズの組のデータサイズをDsmall、性能値をPsmallとする。データサイズ決定部608は、PbigとPsmallのうち、Pminに近い値との組であるデータサイズを選択し、選択したデータサイズをDnearとする。データサイズ決定部608は、データサイズをDminとDnearの中間の値として設定するステップ906。データサイズ決定部608は、設定されたデータサイズDmを図示しない記憶部に格納する。その後処理はステップ907に遷移する。データサイズ決定部608は、これまでのDmの総和と今回設定されたデータサイズDmとの和がコミット間隔を超えている場合には、これまでのDmの総和と今回決定されたデータサイズDmとの和がコミット間隔と等しい値となるように今回のデータサイズDmを決定する。例えば、コミット間隔が10000で、これまでのDmの総和が8000、今回設定されたデータサイズDmが3000である場合には、和が11000となりコミット間隔10000を越えているため、和がコミット間隔と等しい値になるようにDmを2000と決定する。一方、データサイズ決定部608は、これまでのDmの総和と今回のデータサイズDmとの和がコミット間隔を超えていない場合には、今回のデータサイズDmをデータサイズとして決定するステップ907。データサイズ決定部608は、決定したデータサイズを指定データサイズとして実行制御部602に出力する。以上のステップにより、データサイズ決定部608がデータサイズを決定する。次に、性能計測部610は、決定されたデータサイズにおけるデータの性能値の計測を開始する図13のステップ713。次に、データ読み込み部603は、入力データから、指定データサイズのデータの読み込みを行うステップ714。次に、データ処理部604は、指定データサイズのデータの処理を行うステップ715。次に、バッファ出力部605は、処理されたデータのバッファ出力を行うステップ716。次に、性能計測部610は、性能の計測を終了するステップ717。次に、実行制御部602は、バッファ出力までが行われたデータのデータサイズがコミット間隔に達しているか否かを判断するステップ718。コミット間隔に達していない場合、処理はステップ711へ戻り、コミット間隔に達している場合、処理はステップ719へ遷移する。次に、データ出力部606は、コミット間隔のデータの出力を行うステップ719。データサイズ決定部608は、これまでに記憶されたDmの総和をゼロにする。処理はステップ711へ戻る。以上のステップ711からステップ719を繰り返すことにより、バッチ処理装置600は、キャッシュ効率の良いデータサイズである最適データサイズを発見することができる。以下に、図12~図17を用いて具体的な動作例を説明する。図17は、以下で説明する具体例においてバッチ処理装置600がキャッシュ効率の良いデータサイズの探索を行った時のデータサイズと性能値の関係図である。本例ではコミット間隔が10000に設定されたとする図12のステップ701。まず、バッチ処理装置600は、図12のステップ702においてキャッシュ効率の良いデータサイズの探索を行なう。ステップ702において、データサイズ判断部609は、現在のデータサイズのキャッシュ効率が良いか否かの判断を行う図13のステップ711。具体的には、図14のフローを参照すると、まず、データサイズ判断部609は、これまでに得たデータサイズと性能値との組から性能指標の算出が可能か否かを判断するステップ801。データサイズ判断部609が性能指標を算出するためにはデータサイズとその性能値との3つの組が必要であるが、現在は組の数が0であるから、図14のステップ801はNoとなり、処理は図13のステップ712に遷移する。次に、データサイズ決定部608は、図15のフローによってデータサイズを決定する。現段階ではデータサイズと性能値の組数は0であり、2つ以上存在しないからステップ901はNoとなる。そして、現段階ではデータと性能値の組数は0であるから、ステップ902において、データサイズ決定部608は、コミット間隔10000の半分の値のデータサイズであるD15000をデータサイズとして決定する。次に、ステップ713~ステップ717のステップにおいてD1における性能値この例では1データ当たりの実行時間が計測される。D1における性能値をP180とする図17参照。データサイズはコミット間隔に達していないためステップ718、No、処理は、再びステップ711に戻る。これまでにバッチ処理装置600が取得したデータサイズと性能値の組は1組D1、P1のみのため、データサイズ判断部609は性能指標を算出することはできず図14ステップ801、No、先程と同様に図15のステップ901はNoとなる。データサイズ決定部902は、組の数が1つであるため、コミット間隔10000の1/4のデータサイズであるD22500をデータサイズとして決定するステップ902。次に、ステップ713~ステップ717のステップにおいてD2における性能値が計測される。D2における性能値をP265とする図17参照。データサイズはコミット間隔に達していないためステップ718、No、処理は、再びステップ711に戻る。これまでにバッチ処理装置600が得たデータサイズと性能値の組は2組D1、P1D2、P2のみのため、データサイズ判断部609は性能指標を算出することはできない図14ステップ801、No。しかし、データと性能値の組の数は2つ以上となっているため、図15のステップ901はYesとなり、処理はステップ903に遷移する。データサイズ決定部608は、これまでに取得したデータサイズと性能値の組の中で最小の性能値最小性能値をもつ組を取得するステップ903。ここでは、P180>P265であるため、最小性能値はP265である。次に、データサイズ決定部608は、ステップ903で取得した組のデータサイズの近傍に、当該データサイズよりも大きいデータサイズと当該データサイズよりも小さいデータサイズがそれぞれ存在する否かを判定するステップ904。本例では、最小性能値をもつ組D2、P2のデータサイズD2の近傍には、D22500よりも大きいデータサイズであるD15000しか存在しないため、処理はステップ905へ遷移するステップ904、No。ステップ905において、データサイズ決定部608は、最小性能値との組であるデータサイズD2と、その近傍に存在するデータサイズD1との差D2-D1を求め、当該差の値が正である場合にはデータサイズの増加方向に、負である場合にはデータサイズの減少方向に、新たなデータサイズを設定するステップ905。本例では、D2-D1=25005000<0であるため、データサイズ決定部608は、データサイズの減少方向に新たなデータサイズを設定する。データサイズ決定部608は、次のデータサイズD3を、例えばD2/21250と設定する。その後、処理はステップ907へ遷移する。データサイズ決定部608は、これまでのDmD1とD2の総和と今回のデータサイズDmD3との和がコミット間隔を超えていないD1D2D3=500025001250=8750<10000ため、今回のデータサイズD31250をデータサイズとして決定するステップ907。次に、ステップ713~ステップ717のステップにおいてD3における性能値が計測される。D3における性能値をP368とする図17参照。データサイズはコミット間隔に達していないためステップ718、No、処理は、再びステップ711に戻る。これまでにバッチ処理装置600が取得したデータサイズと性能値の組がD1、P1D2、P2D3、P3の3つであるため、データサイズ判断部609は以下のように性能指標を算出することができる図14ステップ801、Yes。データサイズD1、D2、D3の結果は、P180、P368、P265の順で実行時間が大きいすなわち、D2がDmin、D1がDbig、D3がDsmallであり、P2がPmin、P1がPbig、P3がPsmallである。また、P3はPnearである。。そこで、データサイズ判断部609は、性能指標としてPnear-Pmin/Pmin=P3-P2/P2=68-65/65=3/65を計算するステップ802。データサイズ判断部609は、この値が閾値よりも小さいか否かを判定し、閾値よりも小さい値である場合には、データサイズD2はキャッシュ効率が良いデータサイズであると判断するステップ803。例えば、閾値を5/1005とすれば、3/65<5/100であるから、ステップ803はYesとなる。すなわち、データサイズ判断部609は、P2に対応するデータサイズD2をキャッシュ効率の良いデータサイズであると判断し、D2を最適データサイズと決定する。なお、データサイズ判断部609は、コミット間隔10000を、キャッシュ効率が良いと判断されたデータサイズD22500で割ったときに割り切れるか商が自然数となり余りが生じないか否かを判断しても良いステップ804。本例では、10000/2500=4となり、余りが生じないため、最適データサイズを2500と決定して、データサイズ探索のステップが終了する。次に、処理はステップ703へ遷移する図13のステップ711、Yes。データ読み込み部603は、キャッシュ効率が良いと判断された最適データサイズ分2500のデータの読み込みを行うステップ703。次に、データ処理部604は、読み込んだデータに対してデータ処理を行うステップ704。次に、バッファ出力部605は、データ処理結果に対してバッファ出力を行うステップ705。次に、データ出力部606は、バッファ出力までを行ったデータサイズがコミット間隔に達しているかを判断するステップ706。コミット間隔に達していない場合、処理はステップ703へ戻る。コミット間隔に達している場合、データ出力部606はコミット間隔のデータ出力を行うステップ707。次に、実行制御部602は、入力データの終端に達したか否かの判断を行うステップ708。入力データの終端に達していない場合、処理はステップ703へ戻る。終端に達している場合、実行制御部602は処理を終了する。図19は、本発明の適用前後での、各処理のデータ処理順序と処理間のデータ転送の順序を示す図である。図中の縦方向の細い矢印は各処理部でのデータ処理を表し、横方向の太い矢印は各処理部間のデータ転送ないしデータ出力を表し、数値は実行順序を表す。本発明の適用前には、データ読み込み部603からデータ出力部606までの各処理部はコミット間隔例えば10000を処理し、次の処理部へデータを転送している。一方、本発明の適用後では、データ読み込み部603からバッファ出力部605までの各処理部は、コミット間隔よりも小さいデータサイズ例えば2500を処理し、次の処理部へデータを転送する。また、データ出力部606は、コミット間隔分10000のデータが溜まった時にまとめて出力処理を行う。本発明では、このようにデータの処理順序が変わることで、各処理部間で転送されるデータサイズが小さくなる。図18は、本発明の適用前後のプログラム開始から終了までのイテレーション毎の実行時間の様子を示した図である。本実施の形態によれば、例えば、プログラム開始からの1イテレーションでキャッシュ効率の良いデータサイズが発見される。バッチ処理装置600がキャッシュ効率の良いデータサイズを探索する際には、探索のオーバヘッドによって、コミット間隔での処理を行った場合の実行時間よりも実行時間が増加しうる。しかし、残りのイテレーションが元のコミット間隔での処理を行った場合の実行時間の、例えば約65の実行時間で実行されるため、プログラム全体でキャッシュ効率良く処理を行うことができ、結果として全ての処理を元のコミット間隔で実行した場合に対して約65の実行時間で実行できる。本実施の形態によれば、このような処理によって、キャッシュ効率の良いデータサイズを探索して決定し、以後はキャッシュ効率の良いデータサイズで処理を行うことで、実行時間を短くすることのできるバッチ処理装置、方法、プログラムを提供することができる。<実施形態2>次に、本発明の第2の実施の形態について図面を用いて説明する。図20は本実施の形態のバッチ処理装置100の構成図である。バッチ処理装置100は、切り出し処理部101と、性能計測部106と、データサイズ判断部107と、データサイズ決定部105と、指定プログラム処理部102を備える。切り出し処理部103は、入力データから、データサイズ決定部105によって指定されたデータサイズのデータを切り出す。性能計測部106は、前記データサイズにおけるキャッシュの利用効率を計測する。データサイズ判断部107は、前記データサイズにおけるキャッシュの利用効率が大きいほど小さくなる指標値を算出し、当該データサイズにおける当該指標値が所定値以下であるか否かを判断する。なお、指標値は、キャッシュの利用効率が大きいほど大きくなる指標値であっても良い。データサイズ決定部105は、前記指標値が所定値以下である場合には当該データサイズを最適データサイズとして決定し、所定値以上である場合には前記指標値が所定値以下となるまで他のデータサイズを指定して切り出し部103に出力する。なお、指標値がキャッシュの利用効率が大きいほど大きく指標値である場合には、所定値以下と所定値以上とが逆になる。指定プログラム処理部102は、切り出し部103によって入力データから切り出された最適データサイズのデータに対して、システム開発者が記述した指定プログラムの処理を行う。本実施の形態によれば、このような処理によって、キャッシュ効率の良いデータサイズを探索して決定し、以後はキャッシュ効率の良いデータサイズで処理を行うことで、実行時間を短くすることのできるバッチ処理装置、方法、プログラムを提供することができる。以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しうる様々な変更をすることができる。