JP2017163390A - 情報処理装置、データ圧縮方法、及び、データ圧縮プログラム - Google Patents
情報処理装置、データ圧縮方法、及び、データ圧縮プログラム Download PDFInfo
- Publication number
- JP2017163390A JP2017163390A JP2016047039A JP2016047039A JP2017163390A JP 2017163390 A JP2017163390 A JP 2017163390A JP 2016047039 A JP2016047039 A JP 2016047039A JP 2016047039 A JP2016047039 A JP 2016047039A JP 2017163390 A JP2017163390 A JP 2017163390A
- Authority
- JP
- Japan
- Prior art keywords
- compression
- data
- algorithm
- compressed data
- target data
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/6082—Selection strategies
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6035—Handling of unkown probabilities
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
【課題】 複数の圧縮方法のうち、圧縮率が高い圧縮方法による圧縮データを短時間で取得する情報処理装置、データ圧縮方法、及び、データ圧縮プログラムを提供する。【解決手段】 複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成する生成手段と、前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する選択手段と、を有する。【選択図】図3
Description
本発明は、情報処理装置、データ圧縮方法、及び、データ圧縮プログラムに関する。
近年、データを圧縮するためのアルゴリズム(以下、圧縮方法ともいう)が多く開発されている。データの圧縮率は圧縮方法に応じて異なる。また、データの圧縮率は、同一の圧縮方法に基づく場合であっても、圧縮の対象データ(以下、対象データと称する)の内容に応じて異なる。このため、対象データごとに、圧縮後のデータのサイズが小さくなる、圧縮率の高い圧縮方法が異なる。
したがって、対象データの圧縮率の高い圧縮方法を判定するために、複数の圧縮方法それぞれにしたがって対象データを圧縮し、圧縮結果に基づいて圧縮率が最も高い圧縮方法を判定する方法がある。ただし、複数の圧縮方法それぞれによって圧縮を行うため、圧縮に要する時間が長くなる。
これに対し、複数の圧縮方法それぞれにしたがって、対象データ全体ではなく一部を圧縮し、圧縮結果に基づいて圧縮方法を判定する方法がある。この方法によると、対象データの一部しか圧縮しないため、圧縮に要する時間が短くなる。
圧縮方法に関する技術については、例えば、特許文献1〜3に記載される。
しかしながら、対象データの内容は均一であるとは限らないため、対象データの一部を圧縮したときに圧縮率が最も高い圧縮方法が、対象データ全体を圧縮したときに圧縮率が最も高い圧縮方法と異なる場合がある。また、圧縮方法によっては、対象データの一部を圧縮した場合の圧縮率が、対象データ全体を圧縮した場合の圧縮率より低くなる場合がある。
このように、対象データ全体を圧縮しない限り、圧縮率が最も高い圧縮方法が判明しない。一方、対象データ全体を圧縮する場合、対象データの一部を圧縮する場合と比べて圧縮に要する時間が長くなる。
開示の1つの側面は、複数の圧縮方法のうち、圧縮率が高い圧縮方法による圧縮データを短時間で取得する情報処理装置、データ圧縮方法、及び、データ圧縮プログラムを提供することを目的とする。
第1の態様によれば、情報処理装置は、複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成する生成手段と、前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する選択手段と、を有する。
1つの側面では、複数の圧縮方法のうち、圧縮率が高い圧縮方法による圧縮データを短時間で取得できる。
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
[データの圧縮]
図1は、データの圧縮を模式的に説明する図である。情報処理装置(図1に不図示)は、多くのデータをストレージ装置等の記憶装置に記憶するために、データを圧縮して記憶する。より多くのデータを記憶可能にするために、圧縮率の高い圧縮方法(以下、アルゴリズムと称する)にしたがって、よりサイズの小さい圧縮データに変換されることが望ましい。
図1は、データの圧縮を模式的に説明する図である。情報処理装置(図1に不図示)は、多くのデータをストレージ装置等の記憶装置に記憶するために、データを圧縮して記憶する。より多くのデータを記憶可能にするために、圧縮率の高い圧縮方法(以下、アルゴリズムと称する)にしたがって、よりサイズの小さい圧縮データに変換されることが望ましい。
圧縮は、圧縮の対象となるデータ(以下、対象データと称する)D1を、対象データの実質的な内容(性質)を維持しながら、サイズ(データ量)を低減した圧縮後のデータ(以下、圧縮データと称する)に変換する処理である。また、圧縮率(%)は、対象データD1のサイズと、圧縮データのサイズとの比率である。圧縮率の算出式を、式1に示す。
圧縮率=(圧縮データのサイズ/対象データのサイズ)*100 …式1
式1に示すように、圧縮データのサイズが小さいほど、算出される圧縮率は小さい。つまり、圧縮によって削減するデータ量が多いほど、式1で算出される圧縮率は小さい。一方、圧縮データのサイズが大きく、圧縮によって削減するデータ量が少ないほど、式1で算出される圧縮率が大きい。
式1に示すように、圧縮データのサイズが小さいほど、算出される圧縮率は小さい。つまり、圧縮によって削減するデータ量が多いほど、式1で算出される圧縮率は小さい。一方、圧縮データのサイズが大きく、圧縮によって削減するデータ量が少ないほど、式1で算出される圧縮率が大きい。
本実施の形態では、式1で算出される圧縮率が小さい(削減するデータ量が多い)ことを、圧縮率が高いと表現する。同様にして、本実施の形態では、式1で算出される圧縮率が大きい(削減するデータ量が少ない)ことを、圧縮率が低いと表現する。以下、本実施の形態では、圧縮率を、「高い/低い」という表現にしたがって説明する。
図1は、3つのアルゴリズムα、β、γそれぞれにしたがって、対象データD1を圧縮する例を示す。図1に示す矢印ZZは、データのサイズを示す。対象データD1は、例えば、数十GB(gigabyte:GB)から数百GB程度のサイズのデータである。
図1に横線の矩形で示す圧縮データD2αは、対象データD1を、アルゴリズムαにしたがって圧縮した圧縮データである。同様に、図1に斜線の矩形で示す圧縮データD2βは、アルゴリズムβによる圧縮データであって、縦線の矩形で示す圧縮データD2γは、アルゴリズムγによる圧縮データである。以下、各圧縮データD2α、D2β、D2γを、圧縮データD2ともいう。
0<R(β)<R(α)<R(γ)<1 …式2
式2は、対象データD1を圧縮した場合の、アルゴリズムα、β、γの圧縮率の関係を表す式である。式2の値「R」は圧縮率を示す。したがって、値「R(α)」はアルゴリズムαの圧縮率を、値「R(β)」はアルゴリズムβの圧縮率を、値「R(γ)」はアルゴリズムγの圧縮率を示す。
式2は、対象データD1を圧縮した場合の、アルゴリズムα、β、γの圧縮率の関係を表す式である。式2の値「R」は圧縮率を示す。したがって、値「R(α)」はアルゴリズムαの圧縮率を、値「R(β)」はアルゴリズムβの圧縮率を、値「R(γ)」はアルゴリズムγの圧縮率を示す。
また、対象データD1のサイズを値「K」とする場合、圧縮データD2αのサイズは、値「R(α)K」である。同様に、圧縮データD2βのサイズは値「R(β)K」、圧縮データD2γのサイズは値「R(γ)K」である。
式2に示すように、図1の例では、アルゴリズムα、β、γの間で、アルゴリズムβの圧縮率「R(β)」が最も高く、アルゴリズムγの圧縮率「R(γ)」が最も低い。したがって、図1に示すように、圧縮データD2βのサイズ「R(β)K」が最も小さく、圧縮データD2γのサイズ「R(γ)K」が最も大きい。
(アルゴリズムの一例)
本実施の形態におけるアルゴリズムαは、例えば、ランレングス法である。また、アルゴリズムβはLZ77(Lempel-Ziv1977:LZ77)符号化、アルゴリズムγはLZ78(Lempel-Ziv1978:LZ78)符号化である。
本実施の形態におけるアルゴリズムαは、例えば、ランレングス法である。また、アルゴリズムβはLZ77(Lempel-Ziv1977:LZ77)符号化、アルゴリズムγはLZ78(Lempel-Ziv1978:LZ78)符号化である。
ランレングス法は、同一の値が連続する数(ランレングス)によって、対象データD1を圧縮する方法である。ランレングス法では、対象データD1内の連続する同一の値を、当該値と連続数に置き換えて符号化する。
LZ77符号化、及び、LZ78符号化は、LZ符号化(辞書法)の1つである。辞書法では、入力された記号列が以前の記号列に存在する場合に、入力された記号列を、以前の記号列の位置及び長さを示す値に置き換えて符号化する。
具体的に、LZ77符号化(スライド辞書法)では、対象データD1内の、注目位置から始まる記号列が、それ以前に出現したか否かを判定し、出現している場合に記号列を出現位置と長さを示す値に置き換える。LZ77符号化は、記号列を探す範囲(スライド窓)を辞書として使用するため、スライド辞書法と呼ばれる。
また、LZ78符号化(動的辞書法)では、対象データD1内の記号列にしたがって動的に辞書を作成する。そして、LZ78符号化は、入力された記号列が辞書に存在する場合に、入力された記号列を出現位置と長さを示す値に置き換え、存在しない場合は辞書に登録する。
なお、アルゴリズムα、β、γは、これらの例に限定されるものではない。アルゴリズムα、β、γは、ハフマン符号、算術符号等の別のアルゴリズムであってもよい。
(圧縮率の高いアルゴリズムの判定)
図1で説明したとおり、対象データD1を圧縮した場合の圧縮率は、アルゴリズムに応じて異なる。また、圧縮率は、同一のアルゴリズムに基づく場合であっても、対象データD1の内容に応じて異なる。例えば、ランレングス法では、対象データD1内に連続する値の数がより多いほど、圧縮率が高くなる。また、LZ符号化では、対象データD1内に同一の記号列がより多いほど、圧縮率が高くなる。
図1で説明したとおり、対象データD1を圧縮した場合の圧縮率は、アルゴリズムに応じて異なる。また、圧縮率は、同一のアルゴリズムに基づく場合であっても、対象データD1の内容に応じて異なる。例えば、ランレングス法では、対象データD1内に連続する値の数がより多いほど、圧縮率が高くなる。また、LZ符号化では、対象データD1内に同一の記号列がより多いほど、圧縮率が高くなる。
したがって、対象データD1の種別に基づいて、圧縮率が高いアルゴリズムを判定する方法がある。種別は、対象データD1の内容の特性を示し、例えば、画像、テキスト、グラフ等である。例えば、情報処理装置は、対象データD1を種別に分類する。そして、情報処理装置は、分類した種別のデータの圧縮率が高いアルゴリズムにしたがって、対象データD1を圧縮する。
しかしながら、対象データD1を適切な種別に分類することは容易ではない。また、対象データD1によっては、複数の種別に該当する場合がある。例えば、対象データD1が、テキストと画像の両方を含む場合がある。この場合、当該対象データD1の種別を適切に分類することは容易ではない。
(圧縮の投機的実行)
一方、複数のアルゴリズムそれぞれにしたがって対象データD1を圧縮し、圧縮結果(圧縮率)に基づいて、複数のアルゴリズムから、圧縮率が最も高いアルゴリズムを判定する方法がある。このように、生成した圧縮データD2が使用されない可能性があるにも関わらず圧縮を行うことを、圧縮の投機的実行と称する。圧縮の投機的実行には、対象データD1全体について圧縮の投機的実行を行う方法と、対象データD1の一部について圧縮の投機的実行を行う方法がある。
一方、複数のアルゴリズムそれぞれにしたがって対象データD1を圧縮し、圧縮結果(圧縮率)に基づいて、複数のアルゴリズムから、圧縮率が最も高いアルゴリズムを判定する方法がある。このように、生成した圧縮データD2が使用されない可能性があるにも関わらず圧縮を行うことを、圧縮の投機的実行と称する。圧縮の投機的実行には、対象データD1全体について圧縮の投機的実行を行う方法と、対象データD1の一部について圧縮の投機的実行を行う方法がある。
まず、対象データD1全体について圧縮の投機的実行を行う場合を説明する。情報処理装置は、アルゴリズムα、β、γそれぞれにしたがって、対象データD1全体を圧縮し、圧縮データD2α、D2β、D2γを生成する。そして、情報処理装置は、サイズが最も小さい圧縮データD2βのアルゴリズムβを、圧縮率の最も高いアルゴリズムとして判定する。また、情報処理装置は、他のアルゴリズムの圧縮データD2α、D2γを削除する。
次に、対象データD1の一部について圧縮の投機的実行を行う場合を説明する。情報処理装置は、対象データD1から一部のデータをサンプリングして、アルゴリズムα、β、γそれぞれにしたがって圧縮し、部分圧縮データを生成する。そして、情報処理装置は、部分圧縮データのサイズが最も小さいアルゴリズムを、対象データD1全体を圧縮した場合に圧縮率の最も高いアルゴリズムとして推定する。そして、情報処理装置は、推定したアルゴリズムにしたがって、対象データD1全体を圧縮する。
対象データD1の一部を圧縮する場合、対象データD1全体を圧縮する場合に対して、圧縮対象のデータ量が少ない。したがって、対象データD1の一部について圧縮の投機的実行を行う場合、対象データD1全体について圧縮の投機的実行を行う場合と比較して、圧縮処理に要する時間を短縮可能になる。
ただし、対象データD1の一部について圧縮の投機的実行を行う場合、対象データD1全体を圧縮した場合に圧縮率が最も高くなるアルゴリズムを、適切に推定できない場合がある。具体的に、対象データD1の一部を圧縮したときに圧縮率が最も高いアルゴリズムは、対象データD1全体を圧縮したときに圧縮率が最も高いアルゴリズムと異なる場合がある。ここで、その理由を説明する。
第1に、対象データD1の内容が均一であるとは限らない。また、前述したとおり、対象データD1が複数の種別のデータ(テキストと画像等)を含む場合がある。したがって、同一のアルゴリズムにしたがって圧縮する場合であっても、サンプリングした一部のデータの内容に応じて、圧縮率が変化する。これにより、対象データD1の一部を圧縮する場合のアルゴリズムの圧縮率の順位が、全体を圧縮する場合の順位と異なる場合がある。
第2に、アルゴリズムによっては、対象データD1の一部を圧縮する場合の圧縮率が、対象データD1全体を圧縮する場合の圧縮率に対して低くなる場合がある。例えば、LZ78符号化では、圧縮対象のデータに基づいて辞書を生成し、辞書にしたがって圧縮対象のデータの符号化を行う。
このLZ78符号化によれば、対象データD1の一部を圧縮する場合、対象データD1全体を圧縮する場合と比べて辞書に登録されるデータ量が低減する。このため、符号化できる記号列が減少し圧縮率が低下する。これにより、全体を圧縮する場合にLZ78符号化の圧縮率が最も高いにもかかわらず、一部を圧縮する場合に他のアルゴリズムの圧縮率の方が高くなる場合がある。
このように、投機的実行においても、対象データD1全体を圧縮しない限り、対象データD1全体を圧縮する場合に圧縮率が最も高くなるアルゴリズムを適切に判定できない。ただし、対象データD1全体を圧縮する場合、対象データD1の一部を圧縮する場合と比較して、圧縮に要する時間が長い。このように、圧縮率が最も高いアルゴリズムによる圧縮データD2を短時間で取得することは容易ではない。
[第1の実施の形態]
第1の実施の形態における情報処理装置は、複数の圧縮方法(アルゴリズム)それぞれにしたがって、1つの対象データD1に対して、所定サイズずつ圧縮データを生成する。そして、情報処理装置は、複数のアルゴリズムのうち、最初に圧縮が完了したアルゴリズムの圧縮データD2を選択する。
第1の実施の形態における情報処理装置は、複数の圧縮方法(アルゴリズム)それぞれにしたがって、1つの対象データD1に対して、所定サイズずつ圧縮データを生成する。そして、情報処理装置は、複数のアルゴリズムのうち、最初に圧縮が完了したアルゴリズムの圧縮データD2を選択する。
即ち、本実施の形態における情報処理装置は、圧縮済データのサイズが、複数のアルゴリズムの間で均一になるように、対象データD1を圧縮する。これにより、複数のアルゴリズムの間で、圧縮データD2のサイズが最も小さく、圧縮率が最も高いアルゴリズムによる圧縮処理が最初に完了する。また、このとき、圧縮率が最も高いアルゴリズムが判明するため、情報処理装置は、他のアルゴリズムによる残りの圧縮を省略できる。
これにより、情報処理装置は、最初に対象データD1の圧縮が完了したアルゴリズムの圧縮データD2を選択することによって、圧縮率が最も高いアルゴリズムによる(即ち、サイズが最も小さい)圧縮データD2を短時間で取得できる。
[第1の実施の形態の圧縮処理]
図2は、第1の実施の形態における圧縮処理の流れを説明するフローチャート図である。図2では、圧縮処理の概要を図1の例にしたがって説明する。
図2は、第1の実施の形態における圧縮処理の流れを説明するフローチャート図である。図2では、圧縮処理の概要を図1の例にしたがって説明する。
S1:情報処理装置は、アルゴリズムα、β、γ(図1)それぞれにしたがって、1つの対象データD1(図1)に対して、所定サイズの各圧縮データを生成する。
S2:各圧縮データを生成すると、情報処理装置は、いずれかのアルゴリズムα、β、γによる対象データD1の圧縮が完了したか否かを判定する。いずれのアルゴリズムα、β、γでも対象データD1の圧縮が完了しない場合(S2のNo)、情報処理装置は、工程S1の処理を行う。
工程S1、S2に示すように、情報処理装置は、複数のアルゴリズムα、β、γそれぞれにしたがって、1つの対象データD1について、所定サイズずつ圧縮データを生成する。つまり、情報処理装置は、アルゴリズムα、β、γそれぞれによる所定サイズの各圧縮データを生成するサイクルを繰り返す。
S3:いずれかのアルゴリズムα、β、γによる圧縮が完了した場合(S2のYes)、情報処理装置は、複数のアルゴリズムα、β、γのうち、最初に、対象データD1全体の圧縮が完了したアルゴリズムの圧縮データD2を選択する。つまり、情報処理装置は、最少のサイクル数で圧縮が完了したアルゴリズムの圧縮データD2を選択し、記憶や送信に用いる。このように、情報処理装置は、最初に圧縮が完了したアルゴリズムを適用する。
なお、図示していないが、第1の実施の形態における情報処理装置は、CPU(Central Processing Unit:CPU)とメインメモリとを備える。そして、CPUがメインメモリ内にロードされた、データ圧縮プログラムを実行することによって、図2のフローチャート図に示すデータ圧縮処理を実現する。
[第1の実施の形態の圧縮処理の一例]
図3は、第1の実施の形態における圧縮処理の一例を模式的に説明する図である。図3において、図1で示したものと同一のものは、同一の符号で示す。図3に示す縦方向の破線cyは各サイクルの区切りを示す。サイクルは、当該サイクル内で生成した、各アルゴリズムによる圧縮データがそれぞれ所定サイズszに達したときに切り替わる。
図3は、第1の実施の形態における圧縮処理の一例を模式的に説明する図である。図3において、図1で示したものと同一のものは、同一の符号で示す。図3に示す縦方向の破線cyは各サイクルの区切りを示す。サイクルは、当該サイクル内で生成した、各アルゴリズムによる圧縮データがそれぞれ所定サイズszに達したときに切り替わる。
前述したとおり、本実施の形態の情報処理装置は、各アルゴリズムα、β、γにしたがって、所定サイズszずつ圧縮データを生成する。これは、アルゴリズムα、β、γの間で、圧縮済データのサイズを均一に維持しながら、対象データD1を圧縮することを意味する。
一方、図1で前述したとおり、アルゴリズムα、β、γの間で圧縮率が異なり、各アルゴリズムα、β、γによる圧縮データD2のサイズは互いに異なる。したがって、各サイクルで生成する圧縮データのサイズをアルゴリズムα、β、γの間で均一にした場合、各アルゴリズムα、β、γによる圧縮の進捗率は、圧縮データD2のサイズに応じて異なる。
(圧縮の進捗率)
進捗率=サイクル終了時の圧縮データのサイズ/完了後の圧縮データD2のサイズ …式3
式3は、各アルゴリズムα、β、γによる圧縮の進捗率を計算する式である。式3の「完了後の圧縮データD2のサイズ」は、図1で前述したとおりである。即ち、アルゴリズムαの圧縮データD2αはサイズ「R(α)K」、アルゴリズムβの圧縮データD2βはサイズ「R(β)K」、アルゴリズムγの圧縮データD2γはサイズ「R(γ)K」である。また、式3の「サイクル終了時の圧縮データのサイズ」は、値「sz*サイクル数」である。
進捗率=サイクル終了時の圧縮データのサイズ/完了後の圧縮データD2のサイズ …式3
式3は、各アルゴリズムα、β、γによる圧縮の進捗率を計算する式である。式3の「完了後の圧縮データD2のサイズ」は、図1で前述したとおりである。即ち、アルゴリズムαの圧縮データD2αはサイズ「R(α)K」、アルゴリズムβの圧縮データD2βはサイズ「R(β)K」、アルゴリズムγの圧縮データD2γはサイズ「R(γ)K」である。また、式3の「サイクル終了時の圧縮データのサイズ」は、値「sz*サイクル数」である。
したがって、式3によると、アルゴリズムαの進捗率は、値「(sz*サイクル数)/R(α)K」となる。同様にして、アルゴリズムβの進捗率は値「(sz*サイクル数)/R(β)K」、アルゴリズムγの進捗率は値「(sz*サイクル数)/R(γ)K」となる。
1/R(α):1/R(β):1/R(γ) …式4
式4は、式3に示した進捗率に基づく、アルゴリズムα、β、γの間の進捗率の比を示す。式4に示すように、圧縮率が高い(値が小さい)ほど、圧縮の進捗率の比が大きい。本実施の形態ではアルゴリズムβの圧縮率「R(β)」が最も高いため、アルゴリズムβによる圧縮の進捗率が最も大きい。進捗率が大きいほど、圧縮は早く完了する。したがって、アルゴリズムα、β、γの間で、アルゴリズムβによる圧縮が最初に完了する。ここで、各サイクルの処理の流れを説明する。
式4は、式3に示した進捗率に基づく、アルゴリズムα、β、γの間の進捗率の比を示す。式4に示すように、圧縮率が高い(値が小さい)ほど、圧縮の進捗率の比が大きい。本実施の形態ではアルゴリズムβの圧縮率「R(β)」が最も高いため、アルゴリズムβによる圧縮の進捗率が最も大きい。進捗率が大きいほど、圧縮は早く完了する。したがって、アルゴリズムα、β、γの間で、アルゴリズムβによる圧縮が最初に完了する。ここで、各サイクルの処理の流れを説明する。
(1サイクル目)
情報処理装置は、対象データD1に対して、アルゴリズムα、β、γにしたがって、所定サイズszの圧縮データをそれぞれ生成する。図3の例によると、1サイクル目では、各圧縮データが所定サイズszに達するまでの間に、いずれのアルゴリズムα、β、γにおいても、対象データD1全体の圧縮は完了しない。全ての圧縮データが所定サイズszに達すると、1サイクル目の処理が終了する。
情報処理装置は、対象データD1に対して、アルゴリズムα、β、γにしたがって、所定サイズszの圧縮データをそれぞれ生成する。図3の例によると、1サイクル目では、各圧縮データが所定サイズszに達するまでの間に、いずれのアルゴリズムα、β、γにおいても、対象データD1全体の圧縮は完了しない。全ての圧縮データが所定サイズszに達すると、1サイクル目の処理が終了する。
(2サイクル目)
情報処理装置は、1サイクル目の継続処理として、アルゴリズムα、β、γにしたがって、所定サイズszの各圧縮データを生成する。1サイクル目と同様にして、2サイクル目でも、いずれのアルゴリズムα、β、γにおいても、対象データD1全体の圧縮は完了しない。全ての圧縮データが所定サイズszに達すると、2サイクル目の処理が終了する。
情報処理装置は、1サイクル目の継続処理として、アルゴリズムα、β、γにしたがって、所定サイズszの各圧縮データを生成する。1サイクル目と同様にして、2サイクル目でも、いずれのアルゴリズムα、β、γにおいても、対象データD1全体の圧縮は完了しない。全ての圧縮データが所定サイズszに達すると、2サイクル目の処理が終了する。
(3サイクル目)
情報処理装置は、2サイクル目の継続処理として、アルゴリズムα、β、γにしたがって、所定サイズszの各圧縮データを生成する。3サイクル目では、各圧縮データが所定サイズszに達するまでの間に、アルゴリズムβによる対象データD1全体の圧縮が完了する。なお、アルゴリズムα、γによる対象データD1全体の圧縮は、3サイクル目では完了しない。
情報処理装置は、2サイクル目の継続処理として、アルゴリズムα、β、γにしたがって、所定サイズszの各圧縮データを生成する。3サイクル目では、各圧縮データが所定サイズszに達するまでの間に、アルゴリズムβによる対象データD1全体の圧縮が完了する。なお、アルゴリズムα、γによる対象データD1全体の圧縮は、3サイクル目では完了しない。
このように、各サイクルで生成する圧縮データのサイズをアルゴリズム間で均一する場合、圧縮率が高いアルゴリズムβほど進捗率が大きくなり、最初に圧縮が完了する。また、最初に圧縮が完了したアルゴリズムβが最も圧縮率が高いアルゴリズムとして判明するため、情報処理装置は、他のアルゴリズムα、γによる対象データD1の圧縮を完了させる必要がない。
したがって、情報処理装置は、4サイクル目以降の圧縮を停止する(図3の点線部分)。これにより、情報処理装置は、4サイクル目以降のアルゴリズムα、γによる残りの圧縮を省略でき、圧縮に要する時間を短縮できる。
図3の例では、3サイクル目の終了時、アルゴリズムαについて、サイズ「R(α)K−(sz*3)」の圧縮データの生成が未完了である。同様にして、アルゴリズムγについて、サイズ「R(γ)K−(sz*3)」の圧縮データの生成が未完了である。したがって、情報処理装置は、未完了のサイズ分の圧縮データの生成を省略できる。
このように、情報処理装置は、最初に圧縮が完了したアルゴリズムβの圧縮データD2βを選択することで、複数のアルゴリズムα、β、γのうち、圧縮率が最も高いアルゴリズムβによる圧縮データD2βを短時間で取得できる。つまり、情報処理装置は、対象データD1ごとに、圧縮後のデータサイズが最も小さくなるアルゴリズムによる、圧縮データD2を短時間で取得できる。
また、情報処理装置は、対象データD1全体を圧縮した場合に圧縮率が最も高いアルゴリズムの圧縮データD2を取得できる。したがって、テキストや画像等が混在する対象データD1であっても、最も圧縮率が高いアルゴリズムによる圧縮データD2を、短時間で適切に取得可能になる。また、複数のアルゴリズムがLZ78符号化等のアルゴリズムを含む場合であっても、最も圧縮率が高いアルゴリズムによる圧縮データD2を、短時間で適切に取得可能になる。
[第2の実施の形態]
図4は、第2の実施の形態における情報処理装置100のハードウェア構成図である。情報処理装置100は、例えば、CPU101、メインメモリ110や補助記憶装置111等を備えるメモリ102、通信インタフェース部103、外部インタフェース部104を有する。各部は、バス106を介して相互に接続する。
図4は、第2の実施の形態における情報処理装置100のハードウェア構成図である。情報処理装置100は、例えば、CPU101、メインメモリ110や補助記憶装置111等を備えるメモリ102、通信インタフェース部103、外部インタフェース部104を有する。各部は、バス106を介して相互に接続する。
CPU101は、バス106を介してメモリ102等と接続するとともに、情報処理装置100全体の制御を行う。通信インタフェース部103は、他の装置(図示せず)やストレージ装置等の記憶装置(図示せず)と接続し、データの送受信等を行う。また、外部インタフェース部104は、ストレージ装置等の他の記憶装置(図示せず)と接続する。
RAM(Random Access Memory:RAM)等を示すメインメモリ110は、CPU101が処理を行うデータ等を記憶する。補助記憶装置111は、CPU101が実行するオペレーションシステムのプログラムを格納する領域(図示せず)と、データ圧縮プログラム格納領域120と、対象データ格納領域D1とを有する。また、補助記憶装置111は、アルゴリズムαの圧縮データ格納領域D2α、アルゴリズムβの圧縮データ格納領域D2β、アルゴリズムγの圧縮データ格納領域D2γを有する。補助記憶装置111は、HDD(Hard disk drive)、不揮発性半導体メモリ等を示す。
データ圧縮プログラム格納領域120のデータ圧縮プログラム(以下、データ圧縮プログラム120と称する)はメインメモリ110にロードされる。そして、CPU101がメインメモリ110内にロードされたデータ圧縮プログラム120を実行することによって、本実施の形態におけるデータ圧縮処理を実現する。
対象データ格納領域D1の対象データ(以下、対象データD1と称する)は、本実施の形態における圧縮の対象となるデータである。アルゴリズムαの圧縮データ格納領域D2αの圧縮データ(以下、アルゴリズムαの圧縮データD2αと称する)は、アルゴリズムαにしたがって対象データD1を圧縮した場合の圧縮データである。
アルゴリズムβの圧縮データ格納領域D2βの圧縮データ(以下、アルゴリズムβの圧縮データD2βと称する)は、アルゴリズムβにしたがって対象データD1を圧縮した場合の圧縮データである。アルゴリズムγの圧縮データ格納領域D2γの圧縮データ(以下、アルゴリズムγの圧縮データD2γと称する)は、アルゴリズムγにしたがって対象データD1を圧縮した場合の圧縮データである。
[情報処理装置100のソフトウェアの機能]
図5は、第2の実施の形態における情報処理装置100のソフトウェアの機能を示す図である。図5において、図4で示したものと同一のものは、同一の符号で示す。図5に示すように、データ圧縮プログラム120は、例えば、圧縮モジュール121と、選択モジュール122とを有する。
図5は、第2の実施の形態における情報処理装置100のソフトウェアの機能を示す図である。図5において、図4で示したものと同一のものは、同一の符号で示す。図5に示すように、データ圧縮プログラム120は、例えば、圧縮モジュール121と、選択モジュール122とを有する。
また、圧縮モジュール121は、アルゴリズムαモジュール123、アルゴリズムβモジュール124、アルゴリズムγモジュール125を有する。アルゴリズムαモジュール123は、アルゴリズムαによる圧縮を実行するモジュールである。また、アルゴリズムβモジュール124はアルゴリズムβによる圧縮を、アルゴリズムγモジュール125はアルゴリズムγによる圧縮を、実行するモジュールである。
圧縮モジュール121は、各アルゴリズムα、β、γのモジュール123〜125(以下、各アルゴリズムモジュール123〜125ともいう)を呼び出し、対象データD1に対して、所定サイズszずつ圧縮データを生成する処理を指示する。各アルゴリズムモジュール123〜125は、生成した圧縮データを、対応する各アルゴリズムの圧縮データD2に追加して記憶する。
選択モジュール122は、複数のアルゴリズムのうち、最初に対象データD1の圧縮が完了したアルゴリズムの圧縮データD2を選択する。選択モジュール122は、選択した圧縮データD2を用いて、他の装置への送信や、記憶装置への格納(記憶)等を行う。
[データ圧縮プログラム120の処理]
図6は、図4、図5に示したデータ圧縮プログラム120の処理の流れを説明するフローチャート図である。
図6は、図4、図5に示したデータ圧縮プログラム120の処理の流れを説明するフローチャート図である。
S11:データ圧縮プログラム120は、開始時に、対象データD1、及び、当該対象データD1のサイズ「K」の入力を受け付ける。
S12:データ圧縮プログラム120の圧縮モジュール121は、対象データD1を読み出し、初回のサイクルの開始を指示する。
S13:圧縮モジュール121は、各アルゴリズムモジュール123〜125(図5)に、所定サイズszの記憶領域を割り当てる。記憶領域は、圧縮処理に使用する作業領域であって、メインメモリ110や補助記憶装置111等の領域である。
なお、ファイルシステム等の記憶領域を使用する場合、圧縮モジュール121は、予め、各アルゴリズムモジュール123〜125に、記憶領域を割り当てなくてもよい。各アルゴリズムモジュール123〜125は、例えば、ファイルシステムのAPI(Application Programming Interface)を呼び出して、動的に記憶領域を確保する。
S14:圧縮モジュール121は、各アルゴリズムモジュール123〜125を呼び出し、所定サイズszの圧縮データの生成を指示する。各アルゴリズムモジュール123〜125は、圧縮データのサイズが所定サイズszに到達するか、対象データD1全体の圧縮が完了するまで圧縮データを生成する。そして、各アルゴリズムモジュール123〜125は、記憶領域を使用して生成した圧縮データを、対応するアルゴリズムα、β、γの圧縮データD2に追加し記憶する。
例えば、各アルゴリズムモジュール123〜125による処理は、ラウンドロビン方式にしたがって実行される。ラウンドロビン方式は、オペレーティングシステムの、プロセスのスケジューリングアルゴリズムの一種であり、複数のプロセスを平等に順番に実行するものである。例えば、一部のアルゴリズムによる所定サイズszの圧縮データの生成が早く終了した場合、他のアルゴリズムによる処理にCPU時間が分配される。
なお、各アルゴリズムモジュール123〜125による処理の方式は、ラウンドロビン方式に限定されるものではない。各アルゴリズムモジュール123〜125の処理は、マルチコアのCPU101にしたがって並列に実行されてもよい。または、各アルゴリズムモジュール123〜125の処理は、シリアルに順番に実行されてもよい。並列、または、シリアルに処理を実行する場合の圧縮の流れを、図7、図8にしたがって後述する。
(各サイクルで生成する圧縮データのサイズ:所定サイズsz)
所定サイズszは、例えば、対象データD1のサイズにおける所定の割合である。所定の割合は、例えば、対象データD1の「1/100」、「1/1000」等の割合である。また、所定の割合は、対象データD1のサイズに応じて異なる値であってもよい。または、所定サイズszは、対象データD1のサイズに関わらず、固定の値に設定されてもよい。
所定サイズszは、例えば、対象データD1のサイズにおける所定の割合である。所定の割合は、例えば、対象データD1の「1/100」、「1/1000」等の割合である。また、所定の割合は、対象データD1のサイズに応じて異なる値であってもよい。または、所定サイズszは、対象データD1のサイズに関わらず、固定の値に設定されてもよい。
なお、所定サイズszをより小さく設定した場合、各サイクルで生成する圧縮データのサイズが小さくなるため、同一サイクル内で単一のアルゴリズムの圧縮が完了する確率を高くできる。一方、所定サイズszをより大きく設定した場合、同一サイクルで複数のアルゴリズムの圧縮が完了する可能性が生じる。
ただし、所定サイズszをより小さく設定した場合、サイクルの切り替わり頻度が高くなる。これにより、サイクルの切り替わり時に生じるオーバヘッドが大きくなり、処理に遅延が生じる場合がある。したがって、所定サイズszは、例えば、さらに、切り替わり時に生じるオーバヘッド等に基づいて設定されてもよい。
S15:データ圧縮プログラム120の選択モジュール122は、いずれかのアルゴリズムα、β、γによる、対象データD1全体の圧縮が完了したか否かを判定する。図3の例によると、1、2サイクル目では、いずれのアルゴリズムα、β、γも、対象データD1全体の圧縮は完了していない(S15のNo)。
S16:いずれのアルゴリズムでも対象データD1の圧縮が完了しない場合(S15のNo)、圧縮モジュール121は、サイクル「t」をインクリメントして、工程S13に遷移する。そして、圧縮モジュール121は、前回のサイクルの圧縮処理から継続して圧縮処理を行う。
このように、圧縮モジュール121は、最初に対象データの圧縮が完了したアルゴリズム(圧縮方法)を検出するまで、所定サイズずつ圧縮データを生成する処理を繰り返す。つまり、圧縮モジュール121は、圧縮が完了したアルゴリズムがない間、所定サイズszの圧縮データの生成サイクルを繰り返す。これにより、圧縮モジュール121は、複数のアルゴリズムα、β、γの間で、圧縮済データのサイズを均一に維持しながら、対象データD1を圧縮できる。
S17:一方、いずれかのアルゴリズムによる、対象データD1全体の圧縮が完了した場合(S15のYes)、選択モジュール122は、圧縮が完了したアルゴリズムが複数であるか否かを判定する。図3の例によると、3サイクル目では、1つのアルゴリズムβによる対象データD1の圧縮が完了する(S17のNo)。
S18:圧縮が完了したアルゴリズムが1つである場合(S17のNo)、選択モジュール122は、圧縮が完了したアルゴリズムβによる圧縮データD2βを選択する。これにより、選択モジュール122は、最初に圧縮が完了したアルゴリズムの圧縮データD2を取得できる。また、選択モジュール122は、圧縮が未完了の、アルゴリズムαの圧縮データD2α、及び、アルゴリズムγの圧縮データD2γを補助記憶装置111から削除する。
選択モジュール122は、例えば、圧縮結果として、アルゴリズムの識別子「β」、及び、圧縮データD2βを出力する。または、選択モジュール122は、選択した圧縮データD2βを、通信インタフェース部103(図4)を介して、他の装置(情報処理装置やストレージ装置等)に送信してもよい。本実施の形態によると、圧縮率が最も高いアルゴリズムβによる最もサイズの小さい圧縮データD2βを取得可能になる。これにより、圧縮データD2βの送信時のネットワークの負荷を低減可能になる。
または、選択モジュール122は、選択した圧縮データD2βを、補助記憶装置111(図4)や、外部インタフェース部104(図4)を介して接続する別の記憶装置等に記憶してもよい。圧縮率が最も高いアルゴリズムβによる最もサイズの小さい圧縮データD2βを取得できるため、記憶装置により多くのデータを格納することが可能になる。
S19:一方、圧縮が完了したアルゴリズムが複数である場合(S17のYes)、同一のサイクルで、複数のアルゴリズムによる対象データD1の圧縮が完了する場合を示す。この場合、選択モジュール122は、圧縮が完了した複数のアルゴリズムのうち、サイズが最も小さい圧縮データD2を選択する。
つまり、選択モジュール122は、最初に対象データD1の圧縮が完了したアルゴリズム(圧縮方法)が複数ある場合、最初に対象データD1の圧縮が完了した複数のアルゴリズムの圧縮データD2のうち、サイズの小さい圧縮データD2を選択する。これにより、選択モジュール122は、圧縮率が最も高いアルゴリズムによる圧縮データD2を適切に取得できる。工程S19の処理の一例を、図9にしたがって後述する。
図6のフローチャート図に示すように、データ圧縮プログラム120は、複数のアルゴリズム(圧縮方法)の所定サイズszの圧縮データの生成の度に、対象データの圧縮が完了した圧縮方法があるか否かを判定する。そして、データ圧縮プログラム120は、最初に対象データの圧縮が完了したアルゴリズム(圧縮方法)を検出する。
これにより、データ圧縮プログラム120は、複数のアルゴリズムによって所定サイズszずつ圧縮データを生成する際に、最初に対象データD1の圧縮が完了するアルゴリズムを適切に検出できる。つまり、データ圧縮プログラム120は、所定サイズszの各圧縮データの生成を繰り返す際に、最少のサイクル数で圧縮が完了するアルゴリズムを適切に検出できる。
また、図6のフローチャートに示すように、データ圧縮プログラム120は、いずれかのアルゴリズムによる圧縮が完了した場合(S15のYes)、次回以降のサイクルの圧縮を実行しない。即ち、データ圧縮プログラム120は、最初に対象データD1の圧縮が完了したアルゴリズム(圧縮方法)を検出した場合、他のアルゴリズムによる所定サイズszずつ圧縮データを生成する処理を停止する。
本実施の形態では、いずれかのアルゴリズムによる圧縮が最初に完了したサイクルで、圧縮率が最も高いアルゴリズムが判明する。このため、他のアルゴリズムによる対象データD1全体の圧縮を完了させる必要がない。したがって、データ圧縮プログラム120は、次回以降のサイクルの他のアルゴリズムによる圧縮を停止することで、不要な圧縮を省略できる。これにより、対象データD1全体について圧縮の投機的実行を行う場合の、圧縮時間を短くすることが可能になる。
[各アルゴリズムによる圧縮の一連の流れ]
次に、図7、図8にしたがって、図6のフローチャート図に基づく、各アルゴリズムα、β、γによる圧縮の一連の流れを説明する。図7は、複数のアルゴリズムによる圧縮を並列に実行する場合の一例を、図8は、複数のアルゴリズムによる圧縮を順列にシリアルに実行する場合の一例を示す。
次に、図7、図8にしたがって、図6のフローチャート図に基づく、各アルゴリズムα、β、γによる圧縮の一連の流れを説明する。図7は、複数のアルゴリズムによる圧縮を並列に実行する場合の一例を、図8は、複数のアルゴリズムによる圧縮を順列にシリアルに実行する場合の一例を示す。
図7は、各アルゴリズムα、β、γによる圧縮データの生成(図6のS14)を、並列して実行する場合における、一連の流れを説明する図である。図7の横軸は時間を示し、縦軸は圧縮済の圧縮データのサイズを示す。
図7に示す実線の斜線spαは、アルゴリズムαによる圧縮データの生成速度を示す。また、図7に示す点線の斜線spβはアルゴリズムβによる圧縮データの生成速度を示し、一点鎖線の斜線spγはアルゴリズムγによる圧縮データの生成速度を示す。図7に示すように、アルゴリズムα、β、γの間で、アルゴリズムαによる生成速度spαが最も速く、アルゴリズムγによる生成速度spγが最も遅い。
したがって、各アルゴリズムα、β、γによる、所定サイズszの圧縮データの生成処理を並列に実行する場合、アルゴリズムα、アルゴリズムβ、アルゴリズムγの順に処理が終了する。同一サイクル内でアルゴリズムαによる処理が早く終了した場合、例えば、CPU101の資源は、別のアルゴリズムβ、γの処理に割り当てられる。
また、図7に示す矢印sp1は、各サイクルの圧縮データの生成速度を示す。本実施の形態のデータ圧縮プログラム120は、各サイクルで生成する圧縮データのサイズをアルゴリズム間で均一にする。これにより、各アルゴリズムの圧縮データの生成速度spα、spβ、spγは異なるものの、各サイクルで生成する圧縮データのサイズを均一にするため、各サイクルの圧縮データの生成速度sp1はアルゴリズムの間で均一になる。
図3の例と同様にして、図7の例では、3サイクル目で、アルゴリズムβによる対象データD1全体の圧縮が完了する。ただし、図7の例によると、アルゴリズムβによる圧縮の完了時、アルゴリズムα、γによる、3サイクル目分の所定サイズszの圧縮データの生成処理は終了していない。また、アルゴリズムα、γについても、3サイクル目で対象データD1全体の圧縮が完了する可能性がある。
したがって、アルゴリズムα、γについても、3サイクル目分の所定サイズ分の圧縮データの生成処理が実行される。そして、3サイクル目の終了時、圧縮が完了したアルゴリズムが複数ある場合には、当該複数のアルゴリズムによる圧縮データD2のサイズに基づいて、最も圧縮率が高いアルゴリズムが判定される。
これにより、仮に、3サイクル目で、アルゴリズムβに加えて他のアルゴリズムによる圧縮が完了した場合、アルゴリズムβと他のアルゴリズムのうち、圧縮率が最も高いアルゴリズムを選択可能になる。一方、3サイクル目で、アルゴリズムβのみの圧縮が完了した場合、アルゴリズムβの圧縮データD2βのサイズが最少であり、アルゴリズムβの圧縮率が最も高いことが判明する。
図8は、各アルゴリズムα、β、γによる圧縮データの生成(図6のS14)を、シリアルに実行する場合における、一連の流れを説明する図である。図7と同様にして、図8の横軸は時間を示し、縦軸は圧縮後の圧縮データのサイズを示す。図8に示す実線の斜線spα、点線の斜線spβ、一点鎖線の斜線spγについても、図7と同様である。
図8に示す矢印sp2は、各サイクルの圧縮データの生成速度を示す。図8の例では、データ圧縮プログラム120、各アルゴリズムの圧縮データの生成処理を順番にシリアルに実行する。
具体的に、データ圧縮プログラム120は、アルゴリズムαによる所定サイズ分の圧縮データの生成終了後、アルゴリズムβによる所定サイズ分の圧縮データの生成処理を実行する。また、データ圧縮プログラム120は、アルゴリズムβによる所定サイズ分の圧縮データの生成終了後、アルゴリズムγによる所定サイズ分の圧縮データの生成処理を実行する。
このため、図8に示す各サイクルの圧縮データの生成速度sp2は、図7に示す圧縮データの生成速度sp1に対して遅い。なお、図7で説明したとおり、各アルゴリズムの生成速度spα、spβ、spγは異なるものの、各サイクルの圧縮データの生成速度sp2はアルゴリズム間で同一となる。
また、図8の例でも、3サイクル目でアルゴリズムβによる圧縮が完了した後であっても、データ圧縮プログラム120は、アルゴリズムγによる、3サイクル目分の所定サイズ分の圧縮データの生成処理を実行する。
図7、図8に示すように、本実施の形態におけるデータ圧縮プログラム120は、生成する圧縮データのサイズをアルゴリズム間で均一に維持しながら、対象データD1を圧縮する。このため、複数のアルゴリズムのうち、最少のサイクルで圧縮が完了したアルゴリズムによる圧縮データD2を選択することで、圧縮率が最も高いアルゴリズムによる圧縮データD2を短時間で取得可能になる。
[同一サイクル内で、複数のアルゴリズムによる圧縮が完了する例]
図9は、同一サイクルで複数のアルゴリズムによる対象データD1全体の圧縮が完了する場合における、一連の流れを模式的に説明する図である。図9において、図3で示したものと同一のものは、同一の符号で示す。
図9は、同一サイクルで複数のアルゴリズムによる対象データD1全体の圧縮が完了する場合における、一連の流れを模式的に説明する図である。図9において、図3で示したものと同一のものは、同一の符号で示す。
図9は、3サイクル目で、アルゴリズムβ、γによる対象データD1の圧縮が完了する場合(図6のS17のYes)を例示する。したがって、3サイクル目の終了時に、圧縮モジュール121は、アルゴリズムβの圧縮データD2βと、アルゴリズムγの圧縮データD2γとのサイズを比較し、サイズが小さい圧縮データD2βを選択する(S19)。
このように、本実施の形態におけるデータ圧縮プログラム120は、最初に圧縮が完了した圧縮方法が複数ある場合、よりサイズの小さい圧縮データD2を選択する。これにより、データ圧縮プログラム120は、圧縮率が最も高いアルゴリズムを適切に判定し、その圧縮データD2を選択できる。
[他の実施の形態]
本実施の形態では、所定サイズszがサイクルを通して一定である場合を例示した。ただし、この例に限定されるものではない。所定サイズszは、サイクル間で変化してもよい。
本実施の形態では、所定サイズszがサイクルを通して一定である場合を例示した。ただし、この例に限定されるものではない。所定サイズszは、サイクル間で変化してもよい。
後半のサイクルは前半のサイクルと比較して、いずれかのアルゴリズムによる対象データD1の圧縮が完了する最終サイクルになる可能性が高い。したがって、例えば、データ圧縮プログラム120は、サイクル数が増加するに連れて、所定サイズszを小さく変化させる。または、データ圧縮プログラム120は、サイクル数が基準値を超えた場合に、所定サイズszをより小さい値に変更してもよい。
これにより、前半のサイクルでは、サイクルの切り替わり頻度を少なくして判定処理のオーバヘッドを低減させることが可能になる。また、いずれかのアルゴリズムによる圧縮が完了する最終サイクルでは、所定サイズszが小さいため、各アルゴリズムが生成する圧縮データのサイズを少なくすることが可能になる。これにより、圧縮率が最も高いアルゴリズム以外の、他のアルゴリズムによる無駄な圧縮処理を抑制することが可能になる。また、最終サイクルで複数のアルゴリズムによる圧縮が完了する確率を下げることが可能になる。
以上の実施の形態をまとめると、次の付記のとおりである。
(付記1)
複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成する生成手段と、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する選択手段と、を有する、
情報処理装置。
複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成する生成手段と、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する選択手段と、を有する、
情報処理装置。
(付記2)
付記1において、
前記選択手段は、前記最初に対象データの圧縮が完了した圧縮方法が複数ある場合、前記最初に対象データの圧縮が完了した複数の圧縮方法の圧縮データのうち、サイズの小さい圧縮データを選択する、
情報処理装置。
付記1において、
前記選択手段は、前記最初に対象データの圧縮が完了した圧縮方法が複数ある場合、前記最初に対象データの圧縮が完了した複数の圧縮方法の圧縮データのうち、サイズの小さい圧縮データを選択する、
情報処理装置。
(付記3)
付記1において、
前記選択手段は、前記複数の圧縮方法の前記所定サイズの圧縮データの生成の度に、前記対象データの圧縮が完了した圧縮方法があるか否かを判定し、前記最初に対象データの圧縮が完了した圧縮方法を検出する、
情報処理装置。
付記1において、
前記選択手段は、前記複数の圧縮方法の前記所定サイズの圧縮データの生成の度に、前記対象データの圧縮が完了した圧縮方法があるか否かを判定し、前記最初に対象データの圧縮が完了した圧縮方法を検出する、
情報処理装置。
(付記4)
付記3において、
前記生成手段は、前記最初に対象データの圧縮が完了した圧縮方法を検出した場合、前記生成を停止する、
情報処理装置。
付記3において、
前記生成手段は、前記最初に対象データの圧縮が完了した圧縮方法を検出した場合、前記生成を停止する、
情報処理装置。
(付記5)
付記3において、
前記生成手段は、前記最初に対象データの圧縮が完了した圧縮方法を検出するまで、前記生成を繰り返す、
情報処理装置。
付記3において、
前記生成手段は、前記最初に対象データの圧縮が完了した圧縮方法を検出するまで、前記生成を繰り返す、
情報処理装置。
(付記6)
付記1において、
前記選択手段は、前記選択した圧縮データの他の装置に対する送信、または、前記選択した圧縮データの記憶装置に対する記憶のいずれかをさらに実行する、
情報処理装置。
付記1において、
前記選択手段は、前記選択した圧縮データの他の装置に対する送信、または、前記選択した圧縮データの記憶装置に対する記憶のいずれかをさらに実行する、
情報処理装置。
(付記7)
複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
データの圧縮方法。
複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
データの圧縮方法。
(付記8)
複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
処理をコンピュータに実行させるデータの圧縮プログラム。
複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
処理をコンピュータに実行させるデータの圧縮プログラム。
100:情報処理装置、101:CPU、102:メモリ、103:通信インタフェース部、104:外部インタフェース部、106:バス、110:メインメモリ、111:補助記憶装置、120:データ圧縮プログラム、121:圧縮モジュール、122:選択モジュール、D1:対象データ、D2(D2α、D2β、D2γ):圧縮データ
Claims (7)
- 複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成する生成手段と、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する選択手段と、を有する、
情報処理装置。 - 請求項1において、
前記選択手段は、前記最初に対象データの圧縮が完了した圧縮方法が複数ある場合、前記最初に対象データの圧縮が完了した複数の圧縮方法の圧縮データのうち、サイズの小さい圧縮データを選択する、
情報処理装置。 - 請求項1において、
前記選択手段は、前記複数の圧縮方法の前記所定サイズの圧縮データの生成の度に、前記対象データの圧縮が完了した圧縮方法があるか否かを判定し、前記最初に対象データの圧縮が完了した圧縮方法を検出する、
情報処理装置。 - 請求項3において、
前記生成手段は、前記最初に対象データの圧縮が完了した圧縮方法を検出した場合、前記生成を停止する、
情報処理装置。 - 請求項1において、
前記選択手段は、前記選択した圧縮データの他の装置に対する送信、または、前記選択した圧縮データの記憶装置に対する記憶のいずれかをさらに実行する、
情報処理装置。 - 複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
データの圧縮方法。 - 複数の圧縮方法それぞれにしたがって、1つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
処理をコンピュータに実行させるデータの圧縮プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016047039A JP2017163390A (ja) | 2016-03-10 | 2016-03-10 | 情報処理装置、データ圧縮方法、及び、データ圧縮プログラム |
US15/423,632 US9831893B2 (en) | 2016-03-10 | 2017-02-03 | Information processing device, data compression method and data compression program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016047039A JP2017163390A (ja) | 2016-03-10 | 2016-03-10 | 情報処理装置、データ圧縮方法、及び、データ圧縮プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017163390A true JP2017163390A (ja) | 2017-09-14 |
Family
ID=59787168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016047039A Pending JP2017163390A (ja) | 2016-03-10 | 2016-03-10 | 情報処理装置、データ圧縮方法、及び、データ圧縮プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US9831893B2 (ja) |
JP (1) | JP2017163390A (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628325B2 (en) * | 2018-05-10 | 2020-04-21 | Sap Se | Storage of data structures in non-volatile memory |
US11552650B2 (en) | 2019-10-03 | 2023-01-10 | Raytheon Company | Methods to compress range doppler map (RDM) values from floating point to decibels (dB) |
US11405622B2 (en) * | 2020-04-22 | 2022-08-02 | Apple Inc. | Lossless compression techniques |
CN113886346A (zh) * | 2021-08-31 | 2022-01-04 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04241681A (ja) | 1991-01-16 | 1992-08-28 | Fujitsu Ltd | 圧縮切替え方式の記憶装置 |
GB2278973B (en) | 1993-06-11 | 1997-10-29 | Quantel Ltd | Video image processing systems |
JP2007025073A (ja) | 2005-07-13 | 2007-02-01 | Sony Corp | データ伝送方法、データ送信装置及びデータ受信装置、並びにプログラム |
CA2742239A1 (en) * | 2008-11-07 | 2010-05-14 | Mitsubishi Electric Corporation | Image encoder and image decoder |
JP5548064B2 (ja) * | 2010-08-17 | 2014-07-16 | ルネサスエレクトロニクス株式会社 | 表示システム及び表示デバイスドライバ |
KR20130027253A (ko) * | 2011-09-07 | 2013-03-15 | 삼성전자주식회사 | 데이터의 압축 방법 |
JP6056468B2 (ja) * | 2012-12-27 | 2017-01-11 | ブラザー工業株式会社 | 画像処理装置およびコンピュータプログラム |
JP2016142595A (ja) | 2015-01-30 | 2016-08-08 | 富士通株式会社 | 移動体端末、位置特定方法、位置特定プログラムおよび位置特定装置 |
-
2016
- 2016-03-10 JP JP2016047039A patent/JP2017163390A/ja active Pending
-
2017
- 2017-02-03 US US15/423,632 patent/US9831893B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20170264311A1 (en) | 2017-09-14 |
US9831893B2 (en) | 2017-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7191240B2 (ja) | ビデオストリーム復号方法、装置、端末機器およびプログラム | |
JP5881416B2 (ja) | データ圧縮装置、及びデータ圧縮装置を含むデータ処理装置 | |
US9147123B2 (en) | System and method to perform feature detection and to determine a feature score | |
JP2017163390A (ja) | 情報処理装置、データ圧縮方法、及び、データ圧縮プログラム | |
KR101603751B1 (ko) | 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 | |
US9684513B2 (en) | Adaptive map-reduce pipeline with dynamic thread allocations | |
US10592447B1 (en) | Accelerated data handling in cloud data storage system | |
US8593308B1 (en) | Method of accelerating dynamic Huffman decompaction within the inflate algorithm | |
US11960421B2 (en) | Operation accelerator and compression method | |
CN111147926B (zh) | 一种数据转码方法及装置 | |
US10021405B2 (en) | Encoding device, decoding device, and image processing device | |
US9137336B1 (en) | Data compression techniques | |
CN110007967B (zh) | 一种基于流式框架的数据处理方法、装置及设备 | |
JP7299334B2 (ja) | チャンキング方法および装置 | |
US9455742B2 (en) | Compression ratio for a compression engine | |
US8018359B2 (en) | Conversion of bit lengths into codes | |
CN110610450B (zh) | 数据处理方法、电子设备和计算机可读存储介质 | |
US9697899B1 (en) | Parallel deflate decoding method and apparatus | |
JP2016170750A (ja) | データ管理プログラム、情報処理装置およびデータ管理方法 | |
CN107783990B (zh) | 一种数据压缩方法及终端 | |
CN115037981B (zh) | 数据流的解码方法、装置、电子设备与存储介质 | |
JP7223760B2 (ja) | 符号化タスクを最適化するための技術 | |
US8390632B1 (en) | Rendering device, non-transitory computer readable medium, and image output apparatus | |
JP2016208153A (ja) | 符号化装置及び符号化方法 | |
CN117640966A (zh) | 图像处理方法、装置、设备及存储介质 |