|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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 配列を取得します。 |
|
|
getObjectArray(int length)
配列プールからオブジェクト配列を取得します。 |
|
IArray<short[]> |
getShortArray(int length)
配列プールから short 配列を取得します。 |
メソッドの詳細 |
---|
IArray<byte[]> getByteArray(int length)
byte
配列を取得します。
length
- 配列の長さ
IArray
オブジェクトIArray<short[]> getShortArray(int length)
short
配列を取得します。
length
- 配列の長さ
IArray
オブジェクトIArray<int[]> getIntArray(int length)
int
配列を取得します。
length
- 配列の長さ
IArray
オブジェクトIArray<float[]> getFloatArray(int length)
float
配列を取得します。
length
- 配列の長さ
IArray
オブジェクトIArray<double[]> getDoubleArray(int length)
double
配列を取得します。
length
- 配列の長さ
IArray
オブジェクト<T> IObjectArray<T> getObjectArray(int length)
length
- 配列の長さ
IObjectArray
オブジェクト
|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |