JP5079110B2 - 圧縮された整数データを記憶・転送するためのシステム - Google Patents

圧縮された整数データを記憶・転送するためのシステム Download PDF

Info

Publication number
JP5079110B2
JP5079110B2 JP2011030873A JP2011030873A JP5079110B2 JP 5079110 B2 JP5079110 B2 JP 5079110B2 JP 2011030873 A JP2011030873 A JP 2011030873A JP 2011030873 A JP2011030873 A JP 2011030873A JP 5079110 B2 JP5079110 B2 JP 5079110B2
Authority
JP
Japan
Prior art keywords
value
integer
digits
equal
binary
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
JP2011030873A
Other languages
English (en)
Other versions
JP2011193451A (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.)
CA Inc
Original Assignee
Computer Associates Think Inc
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 Computer Associates Think Inc filed Critical Computer Associates Think Inc
Publication of JP2011193451A publication Critical patent/JP2011193451A/ja
Application granted granted Critical
Publication of JP5079110B2 publication Critical patent/JP5079110B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/14Conversion to or from non-weighted codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、整数データを圧縮する技術に関する。
インターネット人口が増加するにつれて、多くのビジネスがインターネット上で存在感を確立している。それらのビジネスは、典型的には、1つあるいはそれ以上の数のウエブアプリケーションが走るウエブサイトを立ち上げる。インターネット上でビジネスを行うことの一つの短所として、ウエブサイトがダウンしてしまうと、応答ができなくなる、あるいは、顧客に適切なサービスを提供できなくなってしまい、潜在的な顧客/売り上げを逃してしまうということがある。イントラネットやエキストラネットにも同様の課題がある。それゆえ、ウエブアプリケーションあるいはウエブサイトが適切に動作するようにそれらのパフォーマンスについての問題を積極的に検知し診断するという、サービス志向アーキテクチャ(Service Oriented Architecture: SOA)アプリケーションマネジメントソリューションが開発されている。そのようなアプリケーションマネジメントシステムの一つに、カリフォルニア州サウスサンフランシスコのCA, Inc., Wily Technology DivisionによるIntroscope(登録商標)がある。
Introscope(登録商標)のようなアプリケーションは、その動作において膨大な量のデータを取得し記憶するので、記憶容量の低減と転送帯域の確保のためにデータ圧縮技術が欠かせない。一般に、データを圧縮する手法は、記憶や転送に先立ってデータをエンコードする(符号化する)エンコードエンジンと、データ受信や記憶装置からのデータ取り出しに際してデータをデコードする(復号する)ための逆操作を行うことのできるデコードエンジンを備える。圧縮技術の一つのタイプとして、ロッシーデータ圧縮という技術が知られている。その技術は、高倍率の圧縮ができる反面、デコードに際して、エンコードされる元データの解像度をいくらか犠牲にするものである。ロッシーデータ圧縮技術は、高帯域の転送レートが要求されるマルチメディアデータの転送にしばしば用いられるが、そこでは、デコードされたメディアにおけるデータ忠実性の低下は知覚できるほどではない。
他の状況においては、デコードされたデータがエンコードされたデータの完全な復元であるという、無損失のデータ圧縮が要求される。正値整数の無損失圧縮技術として、1970年代にMIT教授のPeter Eliasによって開発されたエリアスデルタコード化(符号化)アルゴリズムが良く知られている。図1の従来技術のフローチャートを参照し、整数値x=13のエリアスデルタコード化を一例として、自然数xIN={1,2,3,・・・}をコード化する従来のエリアスデルタ技術を説明する。ステップ40では、整数データ値をバイナリフォーマットで受け取る。
13base10= 1101base2
ステップ44では、ステップ42におけるバイナリ値の桁数Nを決定する。
1011はN = 4桁を有する。
Nは、元の整数値xに含まれる最も大きな2のべき乗値の指数の整数値がN−1であるということから、数学的に決定される。別言すると、N-1= Log2 x に含まれる最大の整数、ということである。このことは、一般に、N−1= Log2 x と表記され、本明細書でもそのような表記を用いる。
N-1 = Log2 13 → N-1 = 3; N = 4.
Nを記述する他の手法は次のとおりである。即ち、Nは、xのバイナリ表記における桁数であり、N−1は、xのバイナリ表記から最上位ビット(MSB)を除外したものの桁数である。
ステップ46では、Nをバイナリ数に変換する。
4base10= 100base2
さらにステップ48では、Nのバイナリ表記の桁数N’を決定する。
100 は、N’ = 3 の桁数を有する。 N’-1 = 2
繰り返すが、N’は、Nに含まれる最も大きな2のべき乗値の指数の整数値がN’−1であることから、数学的に決定される。
N’-1 = Log2 4 → N’-1 = 2, N’ = 3
元の整数xに対するエリアスデルタコードEδ(x)は、次の3つの部分から得られる。
Eδ(x) = N’−1個のゼロ(ステップ48)
Eδ(x) = Nのバイナリ表記(ステップ42)
Eδ(x) = xのバイナリ表記の残りN−1桁(即ち、xのバイナリ表記からMSBを除いたもの)
それゆえ、Eδ(13)は次の(数1)のとおりである。
Figure 0005079110

図2の従来技術は、整数0から16まで、及び、32、64、128に対するエリアスデルタコードを示している。
整数値に対するエリアスデルタコードが得られたら、その値はステップ50にて出力される。出力は、プロセッサから永続記憶媒体へ出力される場合があれば、プロセッサから、他のコンピュータデバイスへ送信するための通信インタフェイスへ出力される場合もある。整数値のエリアスデルタコードは、永続記憶媒体に記憶されることもあれば、単一の値として、ネットワーク接続を介して送信される場合もある。あるいは、図3の従来技術に示すように、サブコンポーネント(サブ要素)Eδ(x)1, Eδ(x)2 及び Eδ(x)3 の形式で送信される場合もある。即ち、ステップ52において、Eδ(x)1がFIFOデータ構造体に記憶されるか又は送信される。ステップ54において、Eδ(x)がFIFOデータ構造体に記憶されるか又は送信される。そしてステップ56において、Eδ(x)がFIFOデータ構造体に記憶されるか又は送信される。サブコンポーネントは上記した順で記憶され送信され、それらがFIFO構造体から取り出されるか受信されたときには、エリアスデルタコードの他のサブコンポーネントをデコードする必要があるそれらサブコンポーネントは、適切な順序で調べられる。エリアスデルタコード値から元の整数値を復元するために、そのエリアスデルタコード値に対して逆の操作が実行される。
エリアスデルタコード化技術の一つの課題は、あらゆる入力整数値に対して機能しなければならないことであり、それゆえ、あらゆる整数に対してコードのための容量を確保しなければならないことである。図2の例に示されているように、例えばx=64のような大きな入力値に対して、Eδ(64)は、もとのバイナリ値そのものよりも多くの記憶容量/帯域を必要とする(バイナリ値が1000000であるのに対してEδ(64)=00111000000である)。しなしながら、現実のアプリケーションの多くにおいては、入力される整数値には制限がある。例えば、レジスタには、例えば4ビットというように与えられたサイズがある。他の事例として、多くのデータクラスでは、工業規格によって定められたサイズがある。例えば、マルチメディアのストリームにおけるカラー値の送信は0から255の範囲であり、8ビットに格納される。エリアスデルタコード化は、データシステムにはしばしば制限が決められており、入力値は既知の最小値と既知の最大値を有する帯域の範囲であるという、この知見を利用してはいない。
本発明は、概略すると、送信すべき/記憶すべき整数値を、エリアスデルタコード化などの従来の圧縮技術と比較してより高い圧縮率で圧縮するシステムに関する。特に、データシステムが、最小値だけでなく最大値も有する既定の整数域に亘る整数値を記憶及び/又は送信することを用いて、最大値の、あるいは最大値に近い整数値を、データ解像度の損失なく、従来システムよりも高比率で圧縮する。本技術は、エリアスデルタコード化とパラレルの関係にある。しかしながら、記憶すべき、あるいは、送信すべきバイナリ整数値の桁数が、与えられたデータシステムに予め定められた最大桁数に等しいと判定された場合、整数値のlog(2)値のバイナリ表記の記憶及び/又は送信が、記憶又は送信から除外され、これによって、従来のエリアスデルタコード化と比較して高い圧縮率が得られる。
本技術の圧縮技術は、広範囲の様々なデータシステムにおける幅広いアプリケーションに適用することができる。しかしながら、一つのアプリケーションとして、本技術は、ウエブアプリケーションやウエブサイトが適切に動作することを確保するためにそれらウエブアプリケーションやウエブサイトのパフォーマンスの問題を積極的に検知し診断するアプリケーションマネージメントシステムに関連するデータを圧縮するのに用いられる。
本技術は、ハードウエア、ソフトウエア、あるいは、ハードとソフトの組み合わせで実現されてよい。本発明のためのソフトウエアは、ハードディスクドライブ、CD−ROM、DVD、光学ディスク、フロッピー(登録商標)ディスク、テープドライブ、RAM、ROM、あるいは、他の適切な記憶デバイスを含む、一つあるいはそれ以上のプロセッサ読み出し可能な記憶媒体に格納される。別の態様では、そのソフトウエアの一部あるいは全部は、カスタムIC、ゲートアレイ、FPGA、PLD、及び、特定目的のためのコンピュータを含む、専用ハードウエアで置き換えられ得る。一つの態様では、本発明が実装されたソフトウエアは、一つあるいはそれ以上のプロセッサをプログラムするのに用いられる。そのプロセッサは、一つあるいはそれ以上の、記憶デバイス、周辺装置、及び/又は、通信インタフェイスと通信し得る。
エリアスデルタコード化スキームによる整数値符号化の方法を示す、従来技術フローチャートである。 様々な整数に対するエリアスデルタコード化値を示す従来技術のテーブルである。 エリアスデルタコード化値のサブコンポーネントを送信する、あるいは、記憶するステップを示す従来技術フローチャートである。 本システムによる高値圧縮技法に基づく整数値コード化のフローチャートである。 本システムの別の実施態様による高値圧縮技法に基づく整数値コード化のフローチャートである。 本システムの高次圧縮技法によって得られたエンコード値のサブコンポーネントを出力するステップの実施形態を示すフローチャートである。 本システムの高次圧縮技法とエリアスデルタ技法によってエンコードされた0から15の範囲の異なる整数値の比較を示すテーブルである。 本技術による高次圧縮技法とエリアスデルタコード化技法によってエンコードされた0から255の範囲のなかの幾つかの整数値の比較を示すテーブルである。 本技術による高次圧縮技法によってエンコードされた値をデコードするためのフローチャートである。 整数値とそれに対応する高次圧縮値を含む第1テーブルと、整数値とそれに対応する正規化された高次圧縮値を含む第2テーブルを示す。 高次圧縮技法を用いてエンコードされた整数値を記憶及び/又は送信する実施例のブロック図である。 本システムを実装可能なコンピュータシステム環境のブロック図である。
図4〜11を参照して本技術を説明する。それは、一般的に、既知の可能な整数域内の範囲に亘る整数データを圧縮するシステムに関する。本技術の実施例は、特に、予め定められた整数域の上限に近い高次整数値を圧縮するのに効果的であるので、本技術の実施例を、本明細書では、「高次圧縮技法」と称する。ウエブアプリケーションとウエブサイトが適切に実行されるようにそれらのパフォーマンスについての問題を検知し診断するSOAアプリケーションを参照し、以下、高次圧縮技法を用いる一つの特定システムを説明する。そのようなアプリケーションマネジメントシステムの一つに、カリフォルニア州サウスサンフランシスコのCA, Inc., Wily Technology DivisionによるIntroscope(登録商標)がある。図10のブロック図を参照してそのようなシステムを以下にて説明する。しかしながら、本明細書で説明する高次圧縮技法は、予め定められた整数域の範囲に亘る整数値が送信及び/又は記憶される広範囲に及ぶ様々なソフトウエアアプリケーションに適用することができる。
図4に、本技術の高次圧縮技法の実施例による整数値をエンコードするためのフローチャートを示す。この技法は、記憶/送信される整数値の取り得る範囲が最小値(たとえばゼロ)と所定の最大値で制限されているデータシステムにおいて整数値を圧縮するのに用いることができる。その範囲の最小整数値の典型はゼロであるが、他の実施形態では最小値はゼロである必要はない。
最大整数値に関していえば、多くのデータシステムやソフトウエアアプリケーションは、システムの制約によって通常は制限されるデータ値の範囲を扱う。例えば、データシステムは、レジスタ、アドレスバス、データバスを用いており、それらは、例えば、0から15までの間の16個の整数値を扱い得る4ビットといった、予め決められたサイズ、セット数を扱う。他の例として、多くのアプリケーションプログラムは、工業規格によって定められているサイズとフォーマットのデータを送信し記憶する。多くの例の一つとしては、ビットマップ画像やビデオフレームバッファにおけるピクセルの色を表すデータは、8ビットフォーマットでの256個の値の一つとしてしばしば送信され記憶される。他の通信、オーディオ、及び、ビデオのデータは、標準的な8ビット、16ビット、などのデータ長で記憶される。
高次圧縮技法の実施例では、送信され記憶される整数値は、既知の最大値を有する整数域内のものであると仮定する。この最大値の情報は、以下で説明するように、高次圧縮技法を実装するエンコードエンジンとデコードエンジンにて用いられ、圧縮されたデータの圧縮率を向上する。実施例において、本システムは、2に等しい最大整数値の元で動作する。ここで、iは、2のべき乗である(i=2、4、8、16、32、64・・・)。しかしながら、本システムの他の実施形態は、別の整数値範囲のデータを圧縮/デコードするように動作する。
図4のフローチャートを参照して、本システムの実施例を説明する。この処理は、4ビットで送信/記憶される16個までの異なる整数値を送信あるいは記憶するデータシステムにて用いられる。それゆえ、その整数域内の整数値をバイナリ表記で表す際のビットの最大数は4ビットである。上述したように、本技術は、バイナリの桁数の最大数がそれよりも大きい、あるいは小さい他の実施形態のデータシステムでも用いることができる。本明細書においては、バイナリ表記したときの桁数が、与えられたデータシステムにて許容される最大桁数と同じである整数値を「高次整数値」と称する。例えば、この高次圧縮技法は、最大4ビットを占める16個の整数値を扱うシステムで用いられる。そのようなシステムでは、8(1000base2)から15(1111base2)までの整数値が高次の整数値と称される。その同じ整数値であっても、例えば8ビットで256個の整数値を扱うシステムにおいては、高次の整数値とは見なされない。
以下で説明する高次圧縮技法は、エンコードエンジン230(図10)にて実行される。説明の目的をもって、最大16個の整数値を許容するデータシステムにおいて任意に選択された整数値x=14をエンコードする場合について、図4のフローチャートを説明する。しかしながら、そのようなデータシステムにおいて、本技術は、16個の取り得る整数値のいずれであっても受け取ってエンコードできることが理解されるであろう。ステップ100では、エンコードエンジンはバイナリ形式の整数値xを受信する。この例では、
x=14base(10)=1110base(2)
である。
ステップ104では、エンコードエンジン230は、その整数のバイナリ値の桁数Nを決定する。「背景」の欄で説明したように、このときNは、N-1 = log2 x より決定される。
N-1 = log2 14 → N-1 = 3, N = 4
本技術分野の当業者であれば、整数値のバイナリ表記の桁数を決定する代替方法あるいは付加的な方法を理解することもあろう。
ステップ106では、エンコードエンジン230は、Nが既知の整数域のlogの最大値に等しいか否かを判断する。この例では、Nの最大値は4である。整数値x=4の場合Nは4に等しいので、エンコードエンジンは、ステップ108にて、受信した整数値に対するNが既定の最大値に等しいことを示すフラグを設定する。このフラグを設定することは、図4では、「CHK = max」で表されている。ステップ106におけるNの値が最大値よりも小さい場合は、ステップ108はスキップされる。ステップ114では、Nのバイナリ表記(4base10 = 100base2)を用い、Nのバイナリ表記における桁数N’を決定する。
N’-1 = log2 N
N’-1 = log2 4 → N’-1 = 2, N’ = 3.
繰り返すが、本技術分野の当業者であれば、Nのバイナリ表記の桁数を決定する代替方法あるいは付加的な方法を理解することもあろう。
ステップ114以降、エンコードエンジンは高次圧縮値を決定する。ここでは高次圧縮値をM(x)で表す。整数値xが既定の最大値よりも小さい桁数Nを有する場合(即ち、ステップ118においてCHKがmaxに等しくない場合)、高次圧縮値M(x)は、ステップ120にてエリアスデルタ値と同じように決定される。即ち、高次圧縮値M(x) = M(x)に(M(x)の後ろに)M(x)を付加し、さらに(M(x)の後ろに)M(x)を付加したものである。ここで、
M(x)1 = N’ - 1 個のゼロ(ステップ114);
M(x)2 = xのバイナリ表示におけるビット数N(ステップ104);
M(x)3 = xのバイナリ表記の残りN-1桁(即ち、xのバイナリ表記からMSBを除いたもの)
である。
しかしながら、ステップ118において、整数値xが既定の整数値の範囲における最大ビット数を用いるものである場合、本システムは、エリアスデルタコード化技法のような従来の圧縮技法に比較して、エンコードされた値のサイズを低減する。ステップ124では、フラグが最大値に等しい場合、高次圧縮値M(x) = M(x)に(M(x)の後に)M(x)を付加したものとなる。ここで、
M(x)1 = N’ - 1 個のゼロ(ステップ114)
M(x)3 = xのバイナリ表記の残りN-1桁(即ち、xのバイナリ表記からMSBを除いたもの)
である。
理解されるように、受信した整数値のバイナリ表記が、既定の範囲についての最大桁数を有する場合、最上位ビットを表す符号化値(即ちM(x))のための容量を確保する必要がない。
x=14とするこの事例では、バイナリ表記におけるビット数(即ち、4)は、既定の最大値に等しい。従って、
M(14) = M(14)1にM(14)3を付加したもの
M(14)1 = N’ - 1 個のゼロ、即ち2個のゼロ → M(14)1 = 00;
M(14)3 = xのバイナリ表記からMSBを除いた残りN-1桁
x = 14のバイナリ表記は 1110 → M(14)3 = 110
M(14) = M(14)1 に M(14)3を付加したもの
M(14) = 00110
となる。
ステップ130では、高次圧縮値M(x)が出力される。この出力は、プロセッサから永続的記憶媒体への出力であったり、プロセッサから、他のコンピュータデバイスへの転送のための通信インタフェイスへの出力であったりする。整数値に対する高次圧縮値は、永続的記憶媒体に記憶されたり、単一の値としてネットワーク接続を介して転送され得る。あるいは、図5に示されているように、それはサブコンポーネントM(x)1, M(x)2 (場合によっては) M(x)3.として転送/記憶されることもある。即ち、M(x)1は、ステップ134にて、転送されるか、あるいはFIFOデータ構造体に格納される。その整数値のバイナリ表記が既定の最大桁数のものではない場合、ステップ136にて、M(x)2が転送されるかあるいはFIFOデータ構造体に格納される。そうでない場合は、ステップ136はスキップされる。ステップ138にて、M(x)3が送信されるかあるいはFIFOデータ構造体に格納される。サブコンポーネントは上記した順で記憶され送信され、それらがFIFO構造体から取り出されるか受信されたときに、高次圧縮値の他のサブコンポーネントをデコードする必要があるそれらサブコンポーネントは、適切な順序で調べられる。
あるいはサブコンポーネントは、転送されるか又はLIFOデータ構造体に格納され得る。その場合、サブコンポーネントは、上述した場合とは逆順で送信又は格納される。
さらに、上記説明した図4のステップは、上記したステップの結果と同じ結果が得られる他の概念的方法によって行われてもよい。そのような代替方法を図4Aに示す。図4Aは、図4と類似しているが、Nが既定の最大値と同じか否かのチェックが省かれている。その代り、上記説明したように、システムは、ステップ106にて、Nが高次のものであるか否かをチェックする。もしそうであれば、システムは、上記したとおり、ステップ107にて、N’-1 = log2 N を用い、Nのバイナリ表記における桁数N’を決定し、ステップ109にて、M(x)1の後に M(x)3 を付け加えて M(x) を設定する。ここで、M(x)1 と M(x)3は上記説明したとおりである。ステップ106にて、Nが高次のものでないと判定された場合、システムは、上記したとおり、ステップ111にて、N’-1 = log2 N を用い、Nのバイナリ表記における桁数N’を決定し、ステップ113にて、M(x)1の後に M(x) を付けさらにその後に M(x)3を付け加えて M(x) を設定する。ここで、M(x)1 と M(x)と M(x)3は上記説明したとおりである。次いで上記説明したとおりステップ130にてM(x) が出力される。繰り返すが、この技術分野の当業者であれば、上記開示した方法のさらに別の方法を見出し得るであろう。
図6は、整数値が0から15の範囲に属するシステムのテーブルを示す。図に示されているように、下位の整数値(例えば、x≦7、及び、N<最大値4)については、高次圧縮値M(x)はエリアスデルタ値Eδ(x)と同じである。しかしながら、バイナリ表記が最大ビット数である整数値(8≦x≦15、及び、N=最大値4)については、本圧縮技法M(x)は、整数値の転送及び/又は記憶に際して、エリアスデルタコードよりも容量の低減を提供する。
図7は、0から255の範囲に属する整数値(バイナリ表記の最大桁数=8)に対する高次圧縮技法の例を示す。この例では、0から127の範囲の整数値は、エリアスデルタ値と同じ方法で計算された高次圧縮値となる。しかしながら、128から255の範囲の整数値(そのいくつかが図7に示されている)については、それらの整数は最大ビット桁数をとり、それらの高次圧縮値は、エリアスデルタコード化法と比較して桁数の低減が図れる。図に示されているとおり、128から255の範囲の整数に対してはエリアスデルタコードは14桁を要するが、128から255の範囲の整数に対する高次圧縮値はたった9桁で済む。このことは、記憶容量と転送帯域の顕著な節約を提供する。
エンコードされた値が転送にて受信されるか、永続記憶装置から取り出されると、エンコードされた値はデコードされる。本システムは、さらに、デコードエンジン232(図10)を備えている。デコードエンジン232は、上記した高次圧縮技法の逆を行うことができ、エンコードされた値を元の整数値に変換する。図8のフローチャートを参照してデコードエンジン232の処理を説明する。デコードエンジン232は、エンコードエンジン230と同じ既定の最小値と最大値を使って動作する。それゆえ、図8の例において、デコードエンジン232は、エンコードエンジン230と同じ整数域に対して動作するように構成されている。上記の例において、値は0から15の範囲であり、バイナリ表記における最大桁数Nは4である。図4において、M(14)=00110であった。図8にて、記憶/受信された値00110のデコード(復号)を説明する。しかしながら、上記と同様に、デコードエンジンは、既定の整数範囲のどの値であってもデコードできる点が理解されるであろう。
デコードエンジン232は、扱う高次圧縮値M(x)の全部を受信することがあれば、FIFO又はLIFOデータ取得構造体から第1のコンポーネントM(x)1を受信することもある。いずれの場合であっても、ステップ140において、デコードエンジンは、受信したあるいは記憶された値M(x) における先頭のゼロの並びである第1のコンポーネントM(x)1を受信する。前の説明と同じように、先頭に並ぶゼロの個数を以下、N’-1と称することにする。
M(x)=00110の場合、先頭に2個のゼロの並びがある → N’-1=2, 及び N’=3
高次圧縮値において、先頭に並ぶゼロの個数N’-1 は、次の関係によってデコードされるバイナリ値の最上位ビットNを示す。
N’-1 = Log2 N
整数値が0から15の間に制限されているシステムにおいて、先頭にゼロが付いていないことは、整数値が0と1の間であることを示し、先頭にゼロが1個の場合は整数値が2から7の間であることを示し、先頭にゼロが2個(あるいはそれ以上)並んでいる場合は整数値が8から15の間であることを示す。
上記の例では、整数値は0から15の間に制限されている(Nの最大値は4である)。しかしながら、上記で示したように、本発明は、いかなる既知の整数域に対しても動作する。実施例においては、既知の整数域における最大の整数値は、2に等しい。ここで、iは、2のべき乗である(i=2,4,8,16,32,64・・・)。それゆえ、実施例においては、この高次圧縮技法は、2値、4値、16値(上記の例のとおりである)、256値、65536値の整数域を扱うものである。
高次圧縮値の先頭に並ぶゼロの個数が、そのデータシステムにおける最大整数値のバイナリ表記の桁数の log2 の値以上である場合はいつでも、その高次圧縮値は、そのデータシステムにおけるバイナリ表記最大桁数を要する整数値を表す。従って以下のことが言える。
・0から3までの整数域の場合、与えられた高次圧縮値がその先頭に1個のゼロを有することは、その与えられた高次圧縮値がバイナリ表記で最大桁数N=2ビットを要する整数値であることを示す。
・0から15までの整数域の場合(上述の場合)、与えられた高次圧縮値がその先頭に2個のゼロを有することは、その与えられた高次圧縮値がバイナリ表記で最大桁数N=4ビットを要する整数値であることを示している。
・0から255までの整数域の場合、与えられた高次圧縮値がその先頭に3個のゼロを有することは、その与えられた高次圧縮値がバイナリ表記で最大桁数N=8ビットを要する整数値であることを示している。
・0から65535までの整数域の場合、与えられた高次圧縮値がその先頭に4個のゼロを有することは、その与えられた高次圧縮値がバイナリ表記で最大桁数N=16ビットを要する整数値であることを示している、等々。
このような技法と整数域の情報を用いることによって、デコードエンジン232は、高次圧縮値の先頭のゼロの個数だけから、その高次圧縮値がバイナリで最大桁数を要する数値を表していることを判断することができる。
整数値が0から15の範囲である図8の例を続ける。ステップ140では、デコードエンジンは先頭のゼロの個数を読む。ステップ144では、先頭に2個以上のゼロが存在すると判定された場合(N’-1 が2以上である場合)、デコードエンジンは、自動的に、その整数値は8から15の間であり、その整数値のバイナリ表記のビット数Nが4であると判断する。従って、ステップ144にて、N’-1が2以上であると判定された場合、ステップ146にてNに4がセットされ、148−150(後述)のステップはスキップされる。
ステップ152では、第1の中間十進数値Jが、2N-1として決定される。Jは、最上位ビットの十進数表記を表す。M(x) = 00110の例では、N=4である。それゆえ、
J = 2N-1 = 23= 8
である。ステップ158では、受信/記憶された値M(x) から最上位ビットを除いたものを十進数へ変換し、第2の中間十進数値Kが決定される。これは、M(x)の後ろのN-1ビットである。上記のM(x) = 00110の例では、N=4と決定される。それゆえ、N-1 = 3 であり、M(x)の後ろの3桁は110である。従って、この例におけるM(x) のN-1桁の十進数変換値Kは次のとおり与えられる。
110base2 = Kbase10→ K = 6
最後にステップ160にて、元の整数値xは、中間値JとKを加算して決定される。
x = J + K
x = 8 + 6 = 14
図4から理解されるように、高次圧縮技法によって整数値14はM(14) = 00110にエンコードされる。図8から理解されるように、高次圧縮値 00110 は、元の整数値14にデコードされる。
上記の説明において、先頭のゼロの並びが、デコードするバイナリ値が最大ビット数を有していることを示している場合、ステップ148と150はスキップされ、このことは処理時間の低減をもたらすことに留意されたい。ただし、バイナリ表記における桁数が最大値よりも少ないと判定された場合には、ステップ148と159が実行される。例えば、最大ビット数が4であるシステム(その整数域内で16個の整数値が取り得るシステム)において、デコードエンジン232が高次圧縮値M(x)=01101を受信した場合を仮定する。その場合、ステップ140にて先頭に1個のゼロがあり、N’-1は2以上ではない。従って、デコードエンジンは、ステップ148を実行し、M(x)において先頭のゼロの並びに続くN’個のビットを読み出す。01101を復号化するこの例の場合、先頭に1個のゼロがあり、従ってN’-1 = 1であり、N’ = 2である。従って、M(x)において先頭のゼロに続く2ビットが読まれる。M(x) = 01101をデコードするこの例の場合、それら桁は「11」である。ステップ150では、Nは、読み出したN’個のビットの十進法への変換に等しい。この例の場合は、
11base2 = 3base10 → N = 3
である。
前述したように次いでステップ152が実行される。第1の中間値Jは、N=3として、次のとおり決定される。
J = 2N-1 =22 = 4
ステップ158では、第2の中間地Kが決定される。上記に示したように、Kは、受信/記憶された値 M(x) から最上位ビットを除いた残りの部分、即ち、M(x)の最後のN-1桁、の十進法への変換である。M(x) = 01101である上記例では、N=3であることが決定されている。即ち、N-1 = 2 であり、M(x)の最後の2桁は「01」である。従って、この例におけるM(x)のN-1桁の十進法への変換であるKは次のとおり与えられる。
01base2 = Kbase10 → K = 1
最後に、ステップ160にて、中間値JとKが加算され、元の整数値xが求まる。
x = J + K
x = 4 + 1 = 5
上記説明した図8のステップは、上記したステップの結果と同じ結果が得られる、他の概念的な方法によって実行されてもよいことが理解されるであろう。
上記説明したように、実施例では、いかなる既知の整数域であっても、N=2iを満足する最大バイナリ桁数Nを有する。ここで、iは2のべき乗である。この制約によって、デコーダ(復号器)が、エンコードされた高次圧縮値がその既知の整数域における高次整数値を表しているか否かを自動的に判定することができるようになる。iが2のべき乗であるという制約のないシステムでは、先頭のゼロの数に基づいたNに関する仮定が成立しないので、高次圧縮値の復号化はより複雑になるであろう。例えば、Nが2に制限されており、取り得る整数値が16個であるシステムにおいては、M(x)の先頭に2個のゼロが存在すれば、N’-1 = 2 であり、N’ は、100base2 あるいは N = 4base 10 に等しい3ビットのバイナリ値であることが判る。
しかしながら、取り得る整数値は16個ではあるがNが2に制限されていないシステムにおいては、先頭に2個のゼロが存在すればN = 4であると仮定することはできないのである。例えば、M(x)の先頭に2個のゼロが存在する場合、N’-1 = 2 であり、N’ は3ビットのバイナリ値であるが、それは、100 (N = 4)、101 (N = 5)、 110 (N = 6)、或いは、 111 (N = 7 )のいずれかを取り得る。
しかしながら、より複雑であるにしても、この高次圧縮技法の実施例は、Nが2(iは2のべき乗である)に制限されていないNの値を扱うことはできる。これは、そのような値をエンコードしたM(x) が、Nの取り得る値の夫々に対して一意に定まるからである。そのような実施例においては、符号化された値M(x)における先頭のゼロだけではNの値を決定することはできないが、M(x)の他の桁を調べる付加的なステップを実行して、M(x)を元の整数値にデコードすることはできる。
実施例においては、高次圧縮技法は、高次整数値を符号化するには効率がよいが、高次整数値よりも下位の整数値に対してはそうでもない。他の実施形態では、高次圧縮技法によるエンコードに先立って、所定の整数域内の整数値に所定の定数を加算及び/又は除算するという、既知の正規化(regularization)技術を採用することによって、この課題に対処し得る。その定数は、その整数域のサイズに依存する。16値の整数域である上記した図6の例においては、その整数域の最上位において値をエンコードするビット数が、下位の値を符号化するのに必要なビットよりも小さくないので、この正規化ステップは、その利益を生じないことに留意されたい。この状況は、整数域が大きい場合ではない。
例えば、正規化された高次圧縮技法の利点は、図9から明らかである。図9は、8ビット整数域(256個の整数値)に亘る整数値符号化の一部を示している。正規化されていないバージョンでは、高次圧縮技法は、64から127の範囲で値を符号化するのに、128を符号化する場合よりも多くのビットを使う。例えば、所定の値の範囲では、これは準最適である。正規化プロセスでは、例えば、128から255を表すビットコードを32から159を表すコードの代わりに用い、32から127を表すビットコードを160から255を表すコードの代りに用いることによって、この問題に対処し得る。このことは、エンコード/デコードの過程で定数(その値は、その特定の整数域の範囲に依存する)を加算及び/又は減算することによって達成し得る。図9の例では、32から159の間のいずれの値にも、正規化していない高次圧縮エンコードに先立って96が加算され、160から255の間のいずれの値にも、正規化していない高次圧縮エンコードに先立って128が減算されている。このシフトの後、上記した高次圧縮技法が実行される。デコードに際してはその逆が実行される。
上述したように、高次圧縮技法の実施例は、整数データが記憶及び/又は転送される広範囲の様々な状況で用いられる。図10のブロック図を参照して、高次圧縮技法が用いられる1実施例を以下で説明する。このシステムは、“Transaction Tracer” と題する、2002年12月12日に出願された米国特許出願第10/318,272号により詳しく記載されている。その出願は、本技術の所有者に譲渡されている。その出願は、参照によりその全てが本明細書に組み込まれる。一般に、そのようなシステムは、コンピューティング環境におけるトランザクションをモニタする。1以上のトランザクションの組についてのデータが収集される。このデータは次いで、一組の評価に対してテストされる。評価に適合するトランザクションが報告される。一実施形態では、評価に適合しないトランザクションのデータは破棄される。報告されたデータは、ソフトウエアのどの部分が実行が遅いのか、あるいは、適切に機能していないのか、を特定するために用いられる。
一実施形態では、ユーザは、閾値追跡時間を設定するとともに、ソフトウエアシステム上で実行されている一つ、幾つか、あるいは全てのトランザクションについてトランザクション追跡を起動することができる。グラフィカルユーザインタフェイスを使って、実行時間が閾値追跡時間を超えているトランザクションがユーザに報告される。グラフィカルユーザインタフェイスは、追跡されたトランザクションにおいてどこで時間が費やされているか、ユーザが直ちに理解できるように、トランザクションについての報告をビジュアライズすることを含む。
図10はアプリケーションパフォーマンスマネジメントツールのコンポーネントの概念図である。この図は、トランザクションモニタリングシステムによってモニタされる、管理対象アプリケーション200を示している。トランザクションモニタリングシステムは、管理対象アプリケーション200のバイトコードにプローブ202、204を付加することによって、そのバイトコードを計測する(即ち修正する)。プローブは、管理対象アプリケーションのビジネスロジックを変えることなく、そのアプリケーションについての情報の特定部分を計測する。エージェント208もまた、管理対象アプリケーション200の同じ機器に実装される。バイトコードを修正することについての詳しい情報は、“System for Modifying Object Oriented Code” と題する米国特許第6,260,187号に記載されている。その特許は、本技術の所有者に譲渡されている。その特許は、参照によりその内容の全てが本明細書に組み込まれる。トランザクションモニタリングシステムは、さらに、管理対象のアプリケーションの方法が完了したときに、その方法が追跡メカニズムを開始あるいは終了するという、新しいコードを追跡メカニズムを起動する管理対象アプリケーションに付加することによって、バイトコードを計測する。
図10は、また、エンタープライズマネージャ220、データベース222、ワークステーション224、及び、ワークステーション226を示している。管理対象のアプリケーションが動作すると、プローブ(即ち202、及び/又は204)がデータをエージェント208へ中継する。エージェント208は、データを収集し要約し、それをエンタープライズマネージャ220へ送信する。エンタープライズマネージャ220は、エージェント208を介して管理対象アプリケーションからパフォーマンスデータを受信し、要求された計算を実行し、パフォーマンスデータをワークステーション(例えば、224、226)で使えるようにする。オプションではあるが、さらに後の分析に備えてパフォーマンスデータをデータベース222に送る。ワークステーション(例えば224、226)は、パフォーマンスデータを見るためのグラフィカルユーザインタフェイスである。ワークステーションは、人のオペレータがモニタできるようにパフォーマンスデータを見るための特別な画面を作成するのに使われる。一実施形態では、ワークステーションは、2個の主画面、即ちコンソールとエクスプローラを表示する。コンソールは、カスタマイズ可能な1組の画面にパフォーマンスデータを表示する。エクスプローラは、パフォーマンスデータを有意義に見ることができるようにパフォーマンスデータをフィルタする計算器と警報器を表示する。パフォーマンスデータを組織化し、操作し、フィルタリングし、表示するワークステーションの要素には、動作、計測、計算、計器類、継続的な収集、測量的分類、比較、スマートトリガ、及び、SNMP収集が含まれる。
図10に示されているコンポーネント200、220、222、224、及び、226は、それぞれ、分離されたコンピューティングシステム上で動作し、あるいは、2個以上のコンポーネントが一つのコンピューティングシステム内で組み合わされてもよい。これらのコンポーネントのいくつか、あるいは、全てに対するコンピューティングシステムは、様々な異なるタイプのコンピュータデバイスであってよく、それらは、パーソナルコンピュータ、ミニコンピュータ、メインフレーム、サーバー、携帯デバイス、モバイルデバイスなどを含む。コンポーネント200、22、222、224、及び、226のいずれかを記述する例示的なコンピューティング環境300を、図11に示し、以下、説明する。この創造的なシステムは、数々の他の汎用或いは専用コンピュータシステム、環境、あるいは形態とともに動作する。この創造的なシステムとともに用いられるのに適したコンピューティングシステム、環境、及び/又は形態の良く知られた例には、パーソナルコンピュータ、サーバコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、ラップトップ及びパームトップコンピュータ、ハンドヘルドデバイス、それらのシステムやデバイスのいくつかを含む分散コンピューティング環境、等々が含まれるが、それらに限定されるものでもない。
図11に参照される創造的なシステムを実装するための例示的なシステムは、コンピュータ310の形式として、汎用コンピューティングデバイスを含む。コンピュータ310のコンポーネントには、プロセッシングユニット320、システムメモリ330、及び、システムメモリを含む様々なシステムコンポーネントをプロセッシングユニット320に接続するシステムバス321を含むが、それらに限られるものではない。システムバス321には、様々なバスアーキテクチャを採用したローカルバス、周辺バス、メモリコントローラ、メモリバスを含む、様々なタイプのバス構造を採用し得る。例として、そのようなアーキテクチャには、工業規格アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンスドISA(EISA)バス、ビデオエレクトロニクススタンダードアソシエーション(VESA)ローカルバス、及び、メザニンバスとして知られているペリフェラルコンポーネントインターコネクト(PCI)バス、を含むが、それらに限定されるものではない。
コンピュータ310は、様々なコンピュータ読取可能な媒体を含む。コンピュータ読取可能媒体は、コンピュータ310がアクセス可能ないかなる有用な媒体であってもよく、揮発性あるいは不揮発性媒体、着脱可能あるいは着脱不可媒体のいずれであってもよい。例として、コンピュータ読取可能媒体は、コンピュータストレージ媒体や通信媒体を備えるものであってもよいが、それらに限定されるものではない。コンピュータストレージ媒体は、揮発性あるいは不揮発性、着脱可能あるいは着脱不可の媒体のいずれであってもよく、それらは、コンピュータ読取可能な命令、データ構造、プログラムモジュール、あるいは他のデータなどの情報記憶に関する如何なる方法あるいは技術によって実装されてもよい。コンピュータストレージ媒体には、ランダムアクセスメモリ(RAM)、リードオンリイメモリ(ROM)、EEPROM、フラッシュメモリ、他のメモリテクノロジ、CD−ROM、デシタル多用途ディスク(DVD)、あるいは他の光学ディスク媒体、磁気カセット、磁気テープ、磁気ディスク装置、あるいは他の磁気記憶デバイス、あるいは、情報を記憶することができ、コンピュータ310からアクセス可能な他の媒体が含まれるがそれらに限定されるものではない。通信媒体には、典型的には、コンピュータ読取可能な命令、データ構造体、プログラムモジュールや、キャリアウエーブや他の転送機構による変調データ信号による他のデータがあり、さらにはいかなる情報配信媒体も含む。「変調データ信号」は、情報を信号に符号化する方式であり、1以上の特性の組あるいは変化を含む信号を意味する。例として、通信媒体には、有線ネットワークや直接ワイヤ接続などの有線媒体、音波、RF、赤外線などの無線媒体、あるいは他の無線媒体が含まれるがそれらに限定されるものではない。上記した媒体のいかなる組み合わせも、コンピュータ読取可能媒体の範囲に含まれる。
システムメモリ330は、ROM331やRAM332のような揮発性や不揮発性のメモリの形態のコンピュータ記憶媒体を含む。スタートアップの際などにコンピュータ310内の要素間での情報の転送を補助する基本的なルーチンを含むベーシック入力/出力システム(BIOS)333は、典型的にはROM331に記憶されている。RAM332は、典型的には、プロセッシングユニット320上で実行される、及び/又は、直ちにアクセスし得るデータ及び/又はプログラムモジュールを含む。例として、図11には、オペレーティングシステム334、アプリケーションプログラム335、他のプログラムモジュール336、及び、プログラムデータ337が示されているが、それらに限られるものではない。
コンピュータ310は、また、他の着脱式/着脱不可の、揮発性/不揮発性のコンピュータ記憶媒体を含む。例として、図11には、着脱不可の不揮発性磁気媒体にデータを書き込むあるいはデータを読み出すハードディスクドライブ341、着脱式の不揮発性磁気ディスク352にデータを書き込むあるいはデータを読み出す磁気ディスクドライブ351が示されている。コンピュータ310は、光学媒体にデータを書き込む/データを読み出す光学媒体読取りデバイス355を含むこともある。
この例示的なコンピュータ環境において用いられる他の着脱式/着脱不可、揮発性/不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、DVD、デシタルビデオテープ、ソリッドステートRAM、ソリッドステートROM、等々が含まれ得るが、それらに限られるものではない。ハードディスク341は、典型的には、インタフェイス340などの着脱不可のメモリインタフェイスを介してシステムバス321に接続されており、磁気ディスクドライブ351と光学媒体読み取りデバイス355は、典型的には、インタフェイス350などの着脱式メモリインタフェイスによってシステムバス321に接続されている。
図11に示されており上記で説明したドライブとそれに関連するコンピュータ記憶媒体は、コンピュータ310のためのコンピュータ読取り可能な命令、データ構造体、プログラムモジュール、及び、他のデータの格納場所を提供する。例えば、図11において、ハードディスク341は、オペレーティングシステム344、アプリケーションプログラム345、他のプログラムモジュール346、及び、プログラムデータ347を記憶するものとして描かれている。それらのコンポーネントは、オペレーティングシステム334、アプリケーションプログラム335、他のプログラムモジュール336、及び、プログラムデータ337と異なっていてもよいし同じであってもよい。オペレーティングシステム344、アプリケーションプログラム345、他のプログラムモジュール346、及び、プログラムデータ347には、図に描かれるのに異なる番号が与えられており、それらは少なくとも異なるコピーである。ユーザは、キーボード362、通常マウスと呼ばれるポインティングデバイス361、トラックボールやタッチパッドなどの入力デバイスを介して命令や情報をコンピュータ310に入力する。他の入力デバイス(不図示)として、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどがある。それらの、あるいは他の入力デバイスは、システムバス321に接続しているユーザ入力インタフェイス360を介してプロセッシングユニット320に接続されているが、パラレルポート、ゲームポート、あるいは、ユニバーサルシリアルバス(USB)などの他のインタフェイスやバス構造を介して接続されるものであってもよい。モニタ391や他のタイプのディスプレイデバイスもまた、ビデオインタフェイス390などのインタフェイスを介してシステムバス321に接続されている。モニタに加えてコンピュータは、スピーカ397やプリンタ396などの他の周辺出力デバイスを含んでおり、それらは、出力周辺インタフェイス395を介して接続されている。
コンピュータ310は、リモートコンピュータ380のような、1つあるいはそれ以上のリモートコンピュータとの論理的な接続を使ったネットワーク環境にて動作するものであってもよい。リモートコンピュータ380は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、あるいは、他の一般的なネットワークノードであってよく、典型的には、図11ではメモリ記憶デバイス381しか描かれていないが、コンピュータ310のように上記説明した要素の多くあるいは全てを含んでいてよい。図11に示した論理的な接続には、ローカルエリアネットワーク(LAN)371と広域ネットワーク(WAN)373が含まれるが、他のネットワークを含んでもよい。そのようなネットワーク環境には、オフィスにて一般的である、エンタープライズワイドコンピュータネットワーク、イントラネット、及び、インターネットがある。
LANネットワーク環境を使う場合は、コンピュータ310は、ネットワークインタフェイスあるいはアダプタ370を介してLAN371に接続される。WANネットワーク環境を使う場合は、コンピュータ310は、典型的には、モデム372や、インターネットのようなWAN373との通信を確立するための他の手段を有する。内線あるいは外線のモデム372は、ユーザ入力インタフェイス360や他の適切なメカニズムを介してシステムバス321に接続される。ネットワーク環境においては、コンピュータ310に描かれているプログラムモジュール、あるいはその一部は、リモート記憶デバイスに記憶されていてもよい。例として、図11には、メモリデバイス381に格納されているリモートアプリケーションプログラム385が描かれているが、これに限定されるものではない。図に示しているネットワーク接続は一例であって、コンピュータ間の通信リンクを確立する他の手段を用いてもよい。
いくつかの実施形態では、トランザクションマネジメントシステムの一部あるいは全ては、ソフトウエアとして実装されてよい。そのソフトウエアは、1つあるいは複数のプロセッサ読取り可能な記憶デバイスに格納され、1つあるいは複数のプロセッサをプログラムするのに用いられる。図10に戻り、エンタープライズマネージャ220は、さらに、エンコードエンジン230とデコードエンジン232を有するCODECを備える。エンコードエンジン230とデコードエンジン232は、エンタープライズマネージャ220と送受信されるデータ、あるいは、エンタープライズマネージャに記憶されているデータに対して上記した高次圧縮技法を実行する。エンジン230と232を含むCODECは、管理対象のアプリケーション200、ワークステーション224、226、及び/又は、データベース222を搭載する1つあるいは複数のコンピュータシステムに代替的にあるいは付加的に備えられていてもよく、その場合、それらのコンピュータシステムに記憶されるデータあるいは送受信されるデータを符号化する。
一般に、エンコードエンジン232は、コンポーネント200、220、222、224、及び、226のいずれかに備えられた記憶媒体から整数値を受け取り、その値をエンコードし、エンコードした値を、コンポーネント200、220、222、224、及び、226の1つあるいは複数の記憶媒体に記憶する。一実施形態では、エンコードエンジン232は、エンコードされた値を出力し、それらの値を格納するために新たなファイル及び/又はデータ構造体が作成される。同様に、デコードエンジンは、コンポーネント200、220、222、224、及び、226のいずれかに備えられた記憶媒体からエンコードされた値を受け取り、それらの値をデコードし、コンポーネント200、220、222、224、及び、226の1つあるいは複数に、デコードした値を出力する(表示することを含む)。一実施形態では、デコードエンジン232は、整数値を出力し、それらの値を記憶媒体に格納する、及び/又は出力するために新たなファイル及び/又はデータ構造体が作成される。
一実施形態では、図11のシステムのユーザは、閾値追跡時間を指定することによって、エンタプライズマネージャに管理されているエージェントの全てあるいは幾つかについてトランザクション追跡を起動することができる。エージェント内のトランザクションでありその実行時間がその閾値レベルを超えてしまった全てのトランザクションは、追跡され、エンタープライズマネージャ220に報告される。エンタープライズマネージャ220は、追跡情報の要求を登録した適切なワークステーションにその情報を配信する。ワークステーションは、閾値を超えた全てのトランザクションをリストアップするGUIを備えている。リストアップされたトランザクションの夫々に対して、追跡されたトランザクションにおいてどこで時間が費やされているかをユーザが直ちに理解できるように可視化が行われる。
以上、以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、本発明の範囲を限定するものではない。上記した技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記した実施形態は、本発明の原理をベストに説明するために選定されたものであり、その実用に際しては、本発明が最適にその有用性を発揮するように、その特定用途に適するように当業者が様々に変形し得る。本発明の範囲は、以下に記載した特許請求の範囲によって定義される。

Claims (12)

  1. ソフトウエアアプリケーションにおいて使われる整数値であって、前記整数値のバイナリ表現が、前記ソフトウエアアプリケーションにて扱われるバイナリ数の最大桁数に等しい桁数を有する整数値をエンコードする方法であり、
    a)前記整数値のバイナリ表記における桁数Nを決定するステップ;
    b)Nのバイナリ表記における桁数N’を決定するステップ;
    c)の要素を有するように前記整数値をエンコードするステップ;
    1)N’−1個のゼロに等しい第1要素;
    2)第1要素に付け加えられる第2要素であり、前記整数値のバイナリ表記から最上位ビットを除いた値に等しい第2要素;
    d)エンコードされた値を出力するステップ;
    を備える方法。
  2. エンコードされた値を出力する前記ステップ(d)は、エンコードされた値を、ネットワーク接続を介して第1コンピュータデバイスから第2コンピュータデバイスへ転送するステップを備える請求項1記載の方法。
  3. エンコードされた値を出力する前記ステップ(d)は、エンコードされた値を永続性記憶媒体へ記憶するステップを備える請求項1又は2に記載の方法。
  4. エンコードされた値を出力する前記ステップ(d)は、サブコンポーネントを一つずつ出力して前記エンコードされた値を出力するステップであって、最初に前記第1サブコンポーネントを、第2に前記第2サブコンポーネントをFIFOデータ構造体に出力するステップを備える請求項1からのいずれか1項に記載の方法。
  5. エンコードされた値を出力する前記ステップ(d)は、サブコンポーネントを一つずつ出力して前記エンコードされた値を出力するステップであって、最初に前記第2サブコンポーネントを、第2に前記第1サブコンポーネントをLIFOデータ構造体に出力するステップを備える請求項1からのいずれか1項に記載の方法。
  6. バイナリ表現における桁数が前記最大桁数を上限とする整数域に含まれる整数の個数が、2(ただし、iは2のべき乗)に等しいことを特徴とする請求項1からのいずれか1項に記載の方法。
  7. バイナリ表現における桁数が前記最大桁数を上限とする整数域に含まれる整数の個数が、4、16、256、及び、65536のいずれかであることを特徴とする請求項1からのいずれか1項に記載の方法。
  8. (e)前記整数値の少なくとも一部を既定の定数分だけ上位又は下位へシフトすることによって、データシステム内の整数域であってバイナリ表現における桁数が前記最大桁数を上限とする整数域を正規化するステップ;
    をさらに備える請求項1から7のいずれか1項に記載の方法。
  9. ウエブアプリケーションとウエブサイトのパフォーマンスの問題を検知し診断するモニタリングシステムにおいて実行される整数値のエンコード方法であって、
    当該システムは、モニタリングソフトウエアアプリケーションと、当該モニタリングソフトウエアアプリケーションによってモニタされるモニタ対象ソフトウエアアプリケーションを含んでおり、
    当該モニタ対象とモニタリングソフトウエアアプリケーションは、一つのコンピュータデバイス内のつのプロセッサ上で動作するものであり、
    前記つのプロセッサは、前記モニタリングシステム内で用いられる整数値であって、その整数値のバイナリ表現が、前記モニタリングソフトウエアアプリケーションにて扱われるバイナリ数の最大桁数に等しい桁数を有する整数値をエンコードする当該方法を実行するものであり、
    該方法が、
    a)前記整数値のバイナリ表記における桁数Nを決定するステップ;
    b)Nのバイナリ表記における桁数N’を決定するステップ;
    c)の要素を有するように前記整数値をエンコードするステップ;
    1)N’−1個のゼロに等しい第1要素;
    2)第1要素に付け加えられる第2要素であり、前記整数値のバイナリ表記から最上位ビットを除いたものに等しい第2要素;
    d)エンコードされた値を出力するステップ;
    を備えるエンコード方法
  10. 前記つのプロセッサが、前記ステップa)からd)によってエンコードされた値をデコードする方法を実行するものであり、前記デコードする方法は、
    e)エンコードされた値の先頭のゼロの個数を決定するステップ;
    f)先頭のゼロの個数が、前記データシステムの前記最大整数値の前記最大バイナリ桁数のlog2 の値以上であるか否かを決定するステップ;
    g)前記ステップ()にて、前記先頭のゼロの個数が、前記データシステムの前記最大整数値の前記最大バイナリ桁数のlog2 の値以上であると決定された場合、2N-1に等しい第1中間十進数Jを決定するステップ、ただし、Nは、前記最大整数値の前記最大バイナリ桁数に等しい値である;
    h)エンコードされた値からその最上位ビットを除いた値の十進数変換値に等しい値Kであって第2中間十進数Kを決定するステップ;
    i)第1中間十進数Jを第2中間十進数Kに加え、エンコードされた値によって示される整数値を提供するステップ;
    を備える請求項9に記載の方法
  11. 前記先頭のゼロの個数が、前記データシステムの前記最大整数値の前記最大バイナリ桁数のlog2 の値よりも小さい場合に、以下のステップ、
    j)エンコードされた値の中から前記先頭のゼロに続くN’ビットを読み出すステップ;ここで、N’は前記先頭のゼロの個数に1を加えた値であってNのバイナリ表記の桁数に等しい値である;
    k)読み出したN’ビットの十進数変換値に等しい値Nを決定するステップ;
    l)前記ステップh)で決定された値Nを用いて、J=2N-1の式によって値Jを決定するステップ;
    を備える請求項9又は10に記載の方法
  12. 請求項9から11のいずれか1項に記載の方法であって、さらに、
    (m)前記整数値の少なくとも一部を既定の定数分だけ上位又は下位へシフトすることによって、モニタリングシステムによって使われている整数域であってバイナリ表現における桁数が前記最大桁数を上限とする整数域を正規化するステップ;
    を備える方法
JP2011030873A 2010-02-17 2011-02-16 圧縮された整数データを記憶・転送するためのシステム Expired - Fee Related JP5079110B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/707582 2010-02-17
US12/707,582 US8977664B2 (en) 2010-02-17 2010-02-17 System for storing and transmitting compressed integer data

Publications (2)

Publication Number Publication Date
JP2011193451A JP2011193451A (ja) 2011-09-29
JP5079110B2 true JP5079110B2 (ja) 2012-11-21

Family

ID=44202506

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011030873A Expired - Fee Related JP5079110B2 (ja) 2010-02-17 2011-02-16 圧縮された整数データを記憶・転送するためのシステム

Country Status (4)

Country Link
US (1) US8977664B2 (ja)
EP (1) EP2365635A1 (ja)
JP (1) JP5079110B2 (ja)
KR (1) KR101166910B1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101006059B1 (ko) * 2010-07-16 2011-01-07 오재원 정보 압축방법
CN105894548B (zh) * 2012-04-18 2019-09-24 苏州超擎图形软件科技发展有限公司 空间数据渐进传输的有关方法与装置
JP6772486B2 (ja) * 2016-03-08 2020-10-21 日本電気株式会社 センサーデータ処理装置、センサーデータ処理システム、センサーデータ処理方法、及び、センサーデータ処理プログラム
US11290710B1 (en) * 2020-11-30 2022-03-29 Amazon Technologies, Inc. Adaptable golomb coding

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3368157B2 (ja) * 1996-11-18 2003-01-20 キヤノン株式会社 データ圧縮装置、方法及びシステム
JPH1188189A (ja) 1997-09-10 1999-03-30 Canon Inc データ圧縮処理方法及びその装置及びコンピュータ可読メモリ
US6260187B1 (en) 1998-08-20 2001-07-10 Wily Technology, Inc. System for modifying object oriented code
US8321485B2 (en) * 2006-11-08 2012-11-27 Hitachi, Ltd. Device and method for constructing inverted indexes
US7924178B2 (en) * 2008-10-01 2011-04-12 Seagate Technology Llc System and method for lossless data compression

Also Published As

Publication number Publication date
KR20110095209A (ko) 2011-08-24
US8977664B2 (en) 2015-03-10
KR101166910B1 (ko) 2012-07-23
EP2365635A1 (en) 2011-09-14
US20110202584A1 (en) 2011-08-18
JP2011193451A (ja) 2011-09-29

Similar Documents

Publication Publication Date Title
CN109600618B (zh) 视频压缩方法、解压缩方法、装置、终端和介质
CN108988866B (zh) 作为服务的有效数据压缩和分析
JP6242074B2 (ja) 信号データの圧縮および圧縮解除のための方法および装置(信号データの圧縮および圧縮解除)
Woodring et al. Revisiting wavelet compression for large-scale climate data using JPEG 2000 and ensuring data precision
US9088540B1 (en) Processing data formatted for efficient communication over a network
US10666289B1 (en) Data compression using dictionary encoding
JP2004177965A (ja) データを符号化するためのシステム及び方法
JP5079110B2 (ja) 圧縮された整数データを記憶・転送するためのシステム
CN110019865B (zh) 海量图片处理方法、装置、电子设备及存储介质
US20150181236A1 (en) Transform space difference compression
JP2014183551A (ja) データ圧縮装置、データ圧縮方法、およびデータ圧縮プログラム、並びにデータ復元装置、データ復元方法、およびデータ復元プログラム
EP3859976B1 (en) Coding device, decoding device, code string data structure, coding method, decoding method, coding program, and decoding program
Hidayat et al. Survey of performance measurement indicators for lossless compression technique based on the objectives
CN114065704A (zh) 数据压缩方法、电子设备和计算机程序产品
CN107797898B (zh) 数据采集方法及其装置
WO2007100307A1 (en) Streaming repetition coded compression
CN116418348A (zh) 一种数据压缩方法、装置、设备及存储介质
US20100023479A1 (en) Hexadecimal file fast decompression method
US20230060055A1 (en) Computer Data Compression Utilizing Multiple Symbol Alphabets And Dynamic Binding Of Symbol Alphabets
CN110289935B (zh) 一种解码方法、装置、终端和存储介质
WO2021163496A1 (en) Method for compressing sequential records of interrelated data fields
US11023722B2 (en) Data classification bandwidth reduction
US20220342894A1 (en) Computer-readable recording medium storing information processing program, information processing method, and information processing device
US20220207408A1 (en) Mapping machine learning activation data to a representative value palette
US20100321217A1 (en) Content encoding

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120511

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: 20120731

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120828

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5079110

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees