JP5304307B2 - ソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法 - Google Patents

ソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法 Download PDF

Info

Publication number
JP5304307B2
JP5304307B2 JP2009039024A JP2009039024A JP5304307B2 JP 5304307 B2 JP5304307 B2 JP 5304307B2 JP 2009039024 A JP2009039024 A JP 2009039024A JP 2009039024 A JP2009039024 A JP 2009039024A JP 5304307 B2 JP5304307 B2 JP 5304307B2
Authority
JP
Japan
Prior art keywords
sort
sort key
code
data
key comparison
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009039024A
Other languages
English (en)
Other versions
JP2010198070A (ja
Inventor
修二 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009039024A priority Critical patent/JP5304307B2/ja
Publication of JP2010198070A publication Critical patent/JP2010198070A/ja
Application granted granted Critical
Publication of JP5304307B2 publication Critical patent/JP5304307B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ソート処理に用いるソートキー比較コードを生成するソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法に関する。
n件のデータをソートする場合、ソート処理中においてソートキーの比較処理が行われる回数は、最小のソートアルゴリズムでもnlogn回のため、nの値が大きいほど比較処理の回数は指数的に増加する。
これは、データの件数が多いほどソート処理全体の中でソートキーの比較処理の合計時間が占める割合が多くなることを意味する。
このような特徴があるため、ソート処理の実行時間中にソートキーの比較処理合計時間が処理時間の大部分を占めるケースも多い。
ソート処理の高速化のためには、この処理時間の大部分を占める「ソートキーの比較処理」をいかに高速化するかが鍵となる。
ソートキーの比較処理を高速化する手法としては、主として次の三つが挙げられる。
(1)ソートキーの比較回数を減らすアルゴリズムを利用することで、ソートキーの比較処理の呼び出し回数を減らし、ソート処理時間を短縮する。
(2)マルチCPU環境において、ソート対象のデータを複数のブロックに分け、各ブロックのソートを並列に実行することで、ソート処理実行時間を短縮する。
(3)ソートキーの比較処理そのものを高速化することにより、ソート処理時間を短縮する。
これらのうち、上記(3)の手法としては、1回に比較するデータのサイズを増やしたり、ソートキー長分のマシン語コードを予め用意するなどがあったため、対応するソートキー長のマシン語コードが予め用意されていないとソートキーの比較処理を行えないという問題があった。
この問題への対処としては、ソート処理実行時にソートキー比較コードを動的に生成することが考えられる。
特許文献1には、プログラムの実行時に、最適化されていないオブジェクト・コードをリアルタイムに最適化する方法が開示されている。
特開平10−240543号公報
しかし、特許文献1に開示される発明は、システム上で実行される任意の処理を周期的にトレースして最適化するものであり、言うなればフィードバック処理である。従って、常に最適化されたオブジェクト・コードが実行されるとは限らない。ソートキー比較処理の場合は、ソート対象に適したソートキー比較コードを用いなければソート処理を正しく行えないため、特許文献1に開示される発明は、ソートキーを自動生成するのに適用可能な構成ではない。
本発明は係る問題に鑑みてなされたものであり、ソートキー長に適したソートキー比較コードを動的に生成するソートキー比較コード生成装置及び方法、並びにソートキー長分のループのための比較処理が不要なソート処理装置を提供することを目的とする。
上記目的を達成するため、本発明は、第1の態様として、ソート処理に使用するソートキー比較コードを生成するソートキー比較コード生成装置であって、2以上の所定の整数Nから1までの各バイト用のコードデータを記憶する手段と、ソート対象データのソートキー長をNで除した商と同数のNバイト用のコードデータと、ソート対象データのソートキー長をNで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成する手段とを有することを特徴とするソートキー比較コード生成装置を提供するものである。
また、上記目的を達成するため、本発明は、第2の態様として、ソートキーを用いたソートキー比較処理を含むソート処理を実行するソート処理装置であって、2以上の所定の整数Nから1までの各バイト用のコードデータを記憶する手段と、ソート対象データのソートキー長をNで除した商と同数のNバイト用のコードデータと、ソート対象データのソートキー長をNで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成する手段と、ソートキー比較コードとソート対象データとを、Nバイト用のコードデータ及び、余りと同数のバイト用のコードデータごとに比較してソートキー比較処理を行う比較処理手段とを有することを特徴とするソート処理装置を提供するものである。
また、上記目的を達成するため、本発明は、第3の態様として、ソート処理に使用するソートキー比較コードを生成するソートキー比較コード生成方法であって、記憶手段に記憶された2以上の所定の整数Nから1までの各バイト用のコードデータのうち、ソート対象データのソートキー長をNで除した商と同数のNバイト用のコードデータと、ソート対象データのソートキー長をNで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成することを特徴とするソートキー比較コード生成方法を提供するものである。
本発明によれば、ソートキー長に適したソートキー比較コードを動的に生成するソートキー比較コード生成装置及び方法、並びにソートキー長分のループのための比較処理が不要なソート処理装置を提供できる。
本発明の好適な実施の形態に係るソートキー比較コード生成装置の構成を示す図である。 本発明の好適な実施の形態に係るソート処理装置の構成を示す図である。 本発明の好適な実施の形態に係るソート処理装置の構成を示す図である。 本発明の好適な実施の形態に係るソート処理装置のソートキー比較コード生成時の処理の流れを示す図である。 ソートキー比較コードの一例を示す図である。 本発明の好適な実施の形態に係るソート処理装置のソートキー比較処理の流れを示す図である。 本発明に関連するソート処理装置のソートキー比較処理の流れを示す図である。
図1に示すように、本発明の好適な実施の形態に係るソートキー比較コード生成装置20は、ソート処理に使用するソートキー比較コードを生成する装置であって、2以上の所定の整数Nから1までの各バイト用のコードデータ23〜25を記憶するソートキー比較コードデータ格納領域22と、ソート対象データのソートキー長をNで除した商と同数のNバイト用のコードデータ25と、ソート対象データのソートキー長をNで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成するソートキー比較コード生成部21とを有する。
ソートキー比較コード生成装置20は、ソートキー長にあわせて動的にソートキー比較コードを生成できるため、ソートキー長分のマシン語コードを予め用意しておく必要がなく、ソートキー比較処理の内容もシンプルである。さらに、ソートキー長を指定するのみで最適なソートキー比較コードを生成可能であり、いわばフィードフォーワード処理であるため、ソート処理にエラーが生じることはない。
また、図2に示すように、本発明の好適な実施の形態に係るソート処理装置30は、ソートキーを用いたソートキー比較処理を行うソートキー比較処理部37を含むソート処理部36を有する装置であって、2以上の所定の整数Nから1までの各バイト用のコードデータ33〜35を記憶するソートキー比較コードデータ格納領域32と、ソート対象データのソートキー長をNで除した商と同数のNバイト用のコードデータ35と、ソート対象データのソートキー長をNで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成するソートキー比較コード生成部31とを有し、ソートキー比較処理部37は、ソートキー比較コードとソート対象データとを、Nバイト用のコードデータ35及び、余りと同数のバイト用のコードデータごとに比較してソートキー比較処理を行う。
ソート処理装置30は、ソートキー長分のループのための比較処理が不要であり、ソートキー比較処理時の比較処理回数が減少するため、ソートキー比較処理を高速に実行でき、ソート処理全体としても高速化できる。
以下、本発明の好適な実施の形態についてより詳細に説明する。
図3に、本実施形態に係るソート処理装置の構成を示す。このソート処理装置は、ソート処理前処理部1、ソート処理部3及びソートキー比較コードデータ格納領域6を有する。
ソート処理前処理部1は、ソートキー比較コード生成部2を備えており、ソート処理の前処理としてソートキー比較コードを生成する。ソート処理部3は、ソート処理前処理部1が生成したソートキー比較コードを用いて実際のソート処理を行うソートキー比較処理部4と、ソートキー比較コード生成部2が動的に生成したソートキー比較コードを格納するソートキー比較コード生成領域12とを備えている。ソートキー比較コードデータ格納領域6は、ソート処理前処理部1がソートキー比較コードを生成するために用いるコードデータが格納されている。
なお、ソートキー比較コード生成部2は、図1におけるソートキー比較コード生成部21や、図2におけるソートキー比較コード生成部31に相当する。また、ソートキー比較コードデータ格納領域6は、図1におけるソートキー比較コードデータ格納領域22や図2におけるソートキー比較コードデータ格納領域32に相当する。また、ソート処理部3は、図2におけるソート処理部36に相当する。
ソートキー比較コードデータ格納領域6には、初期処理用コードデータ7、1〜Nバイトまでの各比較コードデータ8〜10、終了処理用コードデータ11が格納されている。なお、ここでの前処理、終了処理は、実際の比較処理を行う前後に必要となる処理全般を指し、特定の内容の処理を指す訳ではない。また、初期処理や終了処理の内容は本発明の主旨とは関係しないので、具体的な処理内容についての説明は割愛する。
比較コードデータの最大バイト数は、2以上ならば任意であるが、ソート処理部3が1回に扱う最大のバイト数と同じとすることが好ましい。具体例を挙げると、ソート処理部3が32ビットのCPUを用いて構成される場合、1回に扱える最大のデータは5バイトであるから、1〜5バイトの比較コードデータをソートキー比較コードデータ格納領域6に格納しておくことが好ましい。
本実施形態に係るソート処理装置の動作について説明する。
ソート処理の前処理として、ソート処理前処理部1による処理を行う。ソート処理前処理部1内で、ソートキー比較コード生成部2を呼び出す。ソートキー比較コード生成部2は、ソートキー比較コードデータ格納領域6からコードデータを読み出し、ソートキー比較コードを生成する。
図4に、ソートキー比較コードの生成フローを示す。
まず、残ソートキー長にソートキー長をセットし、初期処理用コードデータ7をコードデータ生成領域12にコピーする(ステップS1)。
次に、残ソートキー長がNバイト用コードデータ10の比較長(ソートキー比較コードデータ格納領域6に格納されているコードデータのうち比較長が最大もの)以下か否かを確認する。換言すると、残ソートキー長がNバイト以下であるか否かを確認する(ステップS2)。残ソートキー長がNバイト以下ではない場合(ステップS2/No)、Nバイト用コードデータ10をコードデータ生成領域12にコピーし、残ソートキー長からNバイト分減算する(ステップS3)。そして、ステップS2へ進み、ステップS2がYesとなるまで上記の処理を繰り返す。残ソートキー長がNバイト以下であるならば(ステップS2/Yes)、残ソートキー長と同じ比較長のコードデータをコードデータ生成領域12にコピーする(ステップS4)。ステップS2〜S4の処理は、残ソートキー長をNで除した場合の商と同数のNバイト用コードデータとその余りと同数のバイト用のコードデータとをコピーする処理に相当する。
最後に、終了処理用コードデータ11をコードデータ生成領域12にコピーする(ステップS5)。
上記の手順で生成したソートキー比較コードは、ソートキー比較コード生成領域12に格納される。ソートキー比較コード生成領域12にコピーされた各コードデータには、ジャンプ先のアドレスなどの可変情報がセットされて実行可能とされる。
図3に、ソートキー長が17バイトである場合に生成されるソートキー比較コードの一例を示す。ここでは、ソートキー比較コードデータ格納領域6には、初期処理用データ、1〜4バイトの比較コードデータ、終了処理データが格納されているとしている。ソートキー長の“17”という値を比較コードデータの最大長である“4”という値で除すると1の余りが生じる。よって、ソートキー比較コードには、4バイトの比較コードデータ四つと、1バイトの比較コードデータ一つとが含まれている。
ソート処理の前処理が完了したら(ソートキー比較コードを生成し終えたら)、ソート処理部3によってソート処理を実行する。ソート処理部3は、入力データ13を読み込み、ソートキー比較コード生成領域12に格納したソートキー比較コードを用いたデータのソートをソートキー比較処理部4において実行する。ソート結果は出力データ14として出力する。
図6に、本実施形態に係るソート処理装置のソートキー比較処理の流れを示す。ここで、ソートキーがソートキー比較コードと一致する場合及び一致しない場合の各処理は公知の処理内容であり、本発明の主旨とは関連しないため、詳細な説明は割愛する。図に示すように、ソートキー比較コードに含まれる各比較コードデータごとに同値であるか否かの判定を行うため、比較処理の回数は、ソートキー長よりも少なくなる。具体的には、図5の例のようにソートキー長が17であり、4バイトまでの比較用のコードデータが用意されているのであれば、比較処理は5回となる。
これに対し、図7に示す一般的なソートキー比較処理では、比較位置をインクリメントしてソートキー終了位置に達したか否かの判断するという処理を繰り返すため、ループのための比較処理(図7破線枠内)がソートキー長と同数必要となり、全体としてはソートキー長の2倍の比較処理が行われることとなる。
このように、本実施形態に係るソート処理装置では、ソートキー長分のループのための比較処理が不要であり、ソートキー比較処理時の比較処理回数が減少するため、ソートキー比較処理を高速に実行でき、ソート処理全体としても高速化できる。
また、ソートキー長にあわせて動的にソートキー比較コードを生成するため、ソートキー長分のマシン語コードを予め用意しておく必要がなく、ソートキー比較処理の内容もシンプルである。
さらに、ソートキー長を指定するのみで最適なソートキー比較コードを生成可能であり、いわばフィードフォーワード処理であるため、ソート処理にエラーが生じることはない。
なお、上記実施形態は本発明の好適な実施の一例であり、本発明はこれに限定されることなく様々な変形が可能である。
1 ソート処理前処理部
2、21、31 ソートキー比較コード生成部
3、36 ソート処理部
4、37 ソートキー比較処理部
6 ソートキー比較コードデータ格納領域
7 初期処理用コードデータ
8、23、33 1バイト用比較コードデータ
9、24、34 2バイト用比較コードデータ
10、25、35 Nバイト用比較コードデータ
11 終了処理用コードデータ
12 ソートキー比較コード生成領域
13 入力データ
14 出力データ
20 ソートキー比較コード生成装置
30 ソート処理装置

Claims (6)

  1. ソート処理に使用するソートキー比較コードを生成するソートキー比較コード生成装置であって、
    2以上の所定の整数Nから1までの各バイト用のコードデータを記憶する手段と、
    ソート対象データのソートキー長を前記Nで除した商と同数の前記Nバイト用のコードデータと、前記ソート対象データのソートキー長を前記Nで除した場合の余りと同数のバイト用のコードデータとを用いて前記ソートキー比較コードを生成する手段とを有することを特徴とするソートキー比較コード生成装置。
  2. 前記Nバイト用のコードデータのデータ量は、前記ソート処理を実行するソート処理装置の演算処理装置が1回の処理で扱う最大のデータ量であることを特徴とする請求項1記載のソートキー比較コード生成装置。
  3. 生成した前記ソートキー比較コードを、前記ソート処理を実行するソート処理装置に出力することを特徴とする請求項1又は2記載のソートキー比較コード生成装置。
  4. ソートキーを用いたソートキー比較処理を含むソート処理を実行するソート処理装置であって、
    2以上の所定の整数Nから1までの各バイト用のコードデータを記憶する手段と、
    ソート対象データのソートキー長を前記Nで除した商と同数の前記Nバイト用のコードデータと、前記ソート対象データのソートキー長を前記Nで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成する手段と、
    前記ソートキー比較コードと前記ソート対象データとを、前記Nバイト用のコードデータ及び、前記余りと同数のバイト用のコードデータごとに比較してソートキー比較処理を行う比較処理手段とを有することを特徴とするソート処理装置。
  5. 前記Nバイト用のコードデータのデータ量は、前記比較処理手段が1回の処理で扱う最大のデータ量であることを特徴とする請求項4記載のソートキー処理装置。
  6. ソート処理に使用するソートキー比較コードを生成するソートキー比較コード生成方法であって、
    記憶手段に記憶された2以上の所定の整数Nから1までの各バイト用のコードデータのうち、ソート対象データのソートキー長を前記Nで除した商と同数の前記Nバイト用のコードデータと、前記ソート対象データのソートキー長を前記Nで除した場合の余りと同数のバイト用のコードデータとを用いて前記ソートキー比較コードを生成することを特徴とするソートキー比較コード生成方法。
JP2009039024A 2009-02-23 2009-02-23 ソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法 Expired - Fee Related JP5304307B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009039024A JP5304307B2 (ja) 2009-02-23 2009-02-23 ソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009039024A JP5304307B2 (ja) 2009-02-23 2009-02-23 ソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法

Publications (2)

Publication Number Publication Date
JP2010198070A JP2010198070A (ja) 2010-09-09
JP5304307B2 true JP5304307B2 (ja) 2013-10-02

Family

ID=42822771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009039024A Expired - Fee Related JP5304307B2 (ja) 2009-02-23 2009-02-23 ソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法

Country Status (1)

Country Link
JP (1) JP5304307B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62105231A (ja) * 1985-11-01 1987-05-15 Hitachi Ltd 任意長デ−タのソ−ト方式
JPH01284921A (ja) * 1988-05-12 1989-11-16 Toshiba Corp ソート処理装置
JP3305767B2 (ja) * 1992-09-08 2002-07-24 株式会社日立製作所 ソート処理方法及びコンパイル方法

Also Published As

Publication number Publication date
JP2010198070A (ja) 2010-09-09

Similar Documents

Publication Publication Date Title
JP5381710B2 (ja) ε遷移を含まない非決定性有限オートマトン生成システムと方法およびプログラム
US11106437B2 (en) Lookup table optimization for programming languages that target synchronous digital circuits
WO2009116646A1 (ja) マルチバイト処理向け文字列照合用有限オートマトン生成システム
JPWO2019241425A5 (ja)
CN110825363B (zh) 智能合约获取方法、装置、电子设备及存储介质
CN110168548B (zh) 编译设备和方法
Ronquist Fast Fitch-parsimony algorithms for large data sets
JP2009181446A (ja) プログラム生成装置およびブロック線図生成装置
JP5440287B2 (ja) シンボリック実行支援プログラム、方法及び装置
US11539509B2 (en) Memory optimization for nested hash operations
JP2010277440A (ja) プログラム実行時における文字列の処理を最適化する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム
JP5304307B2 (ja) ソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法
JP5267243B2 (ja) 動作記述変換装置、動作記述変換方法、およびプログラム
US8385340B1 (en) Pipeline of a packet processor programmed to concurrently perform operations
US8358653B1 (en) Generating a pipeline of a packet processor from a parsing tree
JP6175306B2 (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
JP6555005B2 (ja) 最適化装置、方法およびプログラム
JP6547345B2 (ja) テストケース生成プログラム、テストケース生成方法およびテストケース生成装置
Ueda New developments in FORM
US20050268289A1 (en) Method for decoding instruction in architectural simulator
US9880873B2 (en) Electronic official document processing method
US8443102B1 (en) Pipeline of a packet processor programmed to extract packet fields
JP2015094964A (ja) 悪影響検出装置
JP4327533B2 (ja) 演算処理プログラム、演算処理方法、および演算処理装置
JP5325309B2 (ja) プログラム実行時における文字列の処理を最適化する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110920

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120123

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130610

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5304307

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees