|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
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 オブジェクト
|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||