У меня есть класс временных рядов, который в течение дня будет содержать значения от 100К до 200К (в основном рыночные тики, с одинаковой выборкой). На стороне Java наиболее производительным представлением является использование double [] (в отличие от, скажем, List). Я сомневаюсь, что этот подход хорошо отображается в javasctipt.
На стороне Java массив double [] должен периодически увеличиваться (т.е. выделять новый массив и копировать старый в новый). Так, например, у класса есть метод вроде:
public void add (long time, double price)
{
...
if (_len == _prices.length)
expand ();
_prices[_len++] = price;
...
}
private void expand ()
{
final double[] newprices = new double [_prices.length + 1024];
System.arraycopy (_prices, 0, newprices, 0, _len);
_prices = newprices;
}
Теперь javascript имеет другую модель массива и позволяет инкрементное расширение за счет индексации за пределами последнего индекса, неявно корректируя распределение.
GWT имеет JsArrayNumeric, который позволяет видеть и манипулировать числовыми массивами JS. JsArrayNative, как предполагается, является возвращаемой подписью от JS, хотя и не может быть реализован (да, это может привести к некоторому условному использованию JSNI на стороне JS, но безобразно).
Вопрос, в GWT, какие структуры данных я могу использовать в классе Java, чтобы получить наилучшее отображение в представление JS? Я ищу наиболее эффективный подход для:
- добавление цены к временным сериям (увеличение временных рядов)
- доступ к временным сериям (часто сканирует часть по индексу) / li>
ArrayList , например, отображается на что-то плотное в JavaScript? Может быть, это лучшее отображение, чем при использовании raw double [].