ch.kuramo.javie.api.services
インタフェース IArrayPools


public interface IArrayPools

配列を再利用するための配列プールサービスです。 大きな配列を使用する場合、new演算子を用いて配列を確保すると処理速度への影響が大きいため、 できる限りこのサービスを利用してください。

このサービスの各メソッドが返す値は、生の配列ではなく IArray オブジェクトです。 生の配列を得るには IArray.getArray() を使用します。 配列の要素はクリアされていないため、クリアする必要がある場合は IArray.clear() を使用してください。ただし、getObjectArray(int) が返すオブジェクト配列はnullでクリアされています。 配列プールの実装の性質上、このサービスの各メソッドの引数で指定した長さよりも生の配列は長くなることがあります。 したがって「生の配列.length」で取得した長さは使用せずに、IArray.getLength() による長さを使用してください。 配列を使い終わったら、必ず IArray.release() を呼び出して配列プールに返却してください。

使用例:
  @Effect
  public class BigArrayEffect {
  
        private final IArrayPools arrayPools;
  
        @Inject
        public BigArrayEffect(IArrayPools arrayPools) {
                this.arrayPools = arrayPools;
        }
  
        public IVideoBuffer doVideoEffect() {
  
                // 配列を取得する
                IArray<byte[]> array = arrayPools.getByteArray(1234000);
  
                // 配列の要素をクリアする
                array.clear();
  
                // 生の配列を取得する
                byte[] bytes = array.getArray();
  
                // 配列の長さを取得する(これは誤り:1234000より長い)
                int len = bytes.length;
  
                // 配列の長さを取得する(こちらが正しい:1234000と一致)
                int len = array.getLength();
  
  
                // 配列を用いた処理
                for (int i = 0; i < len; ++i) {
                        ...
                        bytes[i] = ...
                }
   
  
                // 使い終わったらプールへ返却する
                array.release();
  
        }
  }
 

関連項目:
IArray

メソッドの概要
 IArray<byte[]> getByteArray(int length)
          配列プールからbyte配列を取得します。
 IArray<double[]> getDoubleArray(int length)
          配列プールからdouble配列を取得します。
 IArray<float[]> getFloatArray(int length)
          配列プールからfloat配列を取得します。
 IArray<int[]> getIntArray(int length)
          配列プールからint配列を取得します。
<T> IObjectArray<T>
getObjectArray(int length)
          配列プールからオブジェクト配列を取得します。
 IArray<short[]> getShortArray(int length)
          配列プールからshort配列を取得します。
 

メソッドの詳細

getByteArray

IArray<byte[]> getByteArray(int length)
配列プールからbyte配列を取得します。

パラメータ:
length - 配列の長さ
戻り値:
配列をラップした IArray オブジェクト

getShortArray

IArray<short[]> getShortArray(int length)
配列プールからshort配列を取得します。

パラメータ:
length - 配列の長さ
戻り値:
配列をラップした IArray オブジェクト

getIntArray

IArray<int[]> getIntArray(int length)
配列プールからint配列を取得します。

パラメータ:
length - 配列の長さ
戻り値:
配列をラップした IArray オブジェクト

getFloatArray

IArray<float[]> getFloatArray(int length)
配列プールからfloat配列を取得します。

パラメータ:
length - 配列の長さ
戻り値:
配列をラップした IArray オブジェクト

getDoubleArray

IArray<double[]> getDoubleArray(int length)
配列プールからdouble配列を取得します。

パラメータ:
length - 配列の長さ
戻り値:
配列をラップした IArray オブジェクト

getObjectArray

<T> IObjectArray<T> getObjectArray(int length)
配列プールからオブジェクト配列を取得します。

パラメータ:
length - 配列の長さ
戻り値:
配列をラップした IObjectArray オブジェクト