Я разрабатываю приложение Android, используя собственный код для Oboe. Я генерирую данные на стороне C ++, и мне нужно отрисовать эти данные в пользовательском представлении. Я также сгенерировал данные для гобоя из этих данных.
Я мог бы также сгенерировать данные на стороне Java и передать их в c ++ и сгенерировать оттуда данные для гобоя. Приложение работает не в реальном времени, но я бы хотел избежать задержек.
В настоящее время я использую Set * ArrayRegion () для передачи данных в Java, но это копирует данные. Мне действительно нужна только ссылка на массив для доступа для чтения к данным. Может ли NewDirectByteBuffer () дать мне такой доступ? Мне нужно получить доступ к данным, чтобы вывести их на экран, а затем я могу отказаться от ссылки. Будет ли это работать или мне нужно будет скопировать массив? Массивы могут содержать от нескольких тысяч до более 100 тысяч элементов. 1000-100000 элементов, вероятно, будут средними. Меня беспокоит производительность.
Будет ли передача данных в c ++ с помощью Get * ArrayElements () быстрее? Do c говорит, что может копировать. Я мог бы передать данные в c ++ и сгенерировать из него данные гобоя.
Похоже, что если я не использую NewDirectByteBuffer (), я получу две копии данных. Будет ли это работать, а если нет, будет ли Java для c ++ или c ++ для Java быстрее?