Я переношу некоторые Objective-C на Android. Исходное приложение хранит множество данных в массивах структур и имеет некоторые высокопроизводительные методы для поиска в массивах и вычисления на наборах результатов, чтобы обеспечить анализ в реальном времени точек на графике, когда пользователь перетаскивает указатель вокруг графика с помощью их пальцем. Результаты расчета используются для обновления значений в разных представлениях, окружающих график.
Вот пример, который содержит около 7.5k структур.
structDataFeedReduced gFeedData[7662] = {
1233,@"",12.466667,26.166667,@"AARS",0,0,0,1.000000,-1,1,1,
6760,@"",15.816667,41.033333,@"DCTT",1,1,1,12.000000,-1,1,2,
8117,@"",44.016667,144.283333,@"SKDD",2,1,2,9.000000,-1,1,1,
8666283,@"WS",42.676666,40.006668,@"DLCC",3,2,3,-5.000000,-1,1,6,
...
...
...
};
Мой вопрос - лучший способ сохранить эти данные в Java?
Я пробовал следующие, которые не имеют достаточно высокой производительности, либо во время загрузки, либо для предоставления данных для вычислений во время выполнения.
Есть ли другие шаблоны, которые я мог бы попробовать? Если их нет, то я предпочту 3 или 4, так как я пожертвую некоторой загрузкой и инициализацией для хорошего ответа во время выполнения.
Мое обратное блокирование будет заключаться в том, чтобы сжать его в собственный код с помощью JNI. Возможно, это единственный вариант, который имеет смысл?
Благодаря...
Вы можете просто сохранить эти данные в качестве кода. Вы можете определить класс StructDataFeedReduced
, а затем изменить код инициализации на:
static StructDataFeedReduced[] gFeedData = new StructDataFeedReduced[] {
new StructDataFeedReduced(1233,"",12.466667,26.166667,"AARS",0,0,0,1.000000,-1,1,1),
new StructDataFeedReduced(6760,"",15.816667,41.033333,"DCTT",1,1,1,12.000000,-1,1,2),
...
}
Конструктор StructDataFeedReduced
может хранить данные во внутренних полях, если это необходимо.