Invio di dati tra Java a c ++ su Windows?
Domanda
Voglio inviare il buffer audio non elaborato a c ++ per la transcodifica audio. Ho due opzioni
- utilizzando lo stream di piping
- utilizzando buffer diretti (java.nio)
Queste sono davvero le mie 2 migliori opzioni (e quali consiglierebbero le persone?) Grazie!
Soluzione
I buffer diretti in NIO avranno quasi certamente prestazioni migliori. Questo è praticamente il caso ideale per i buffer diretti.
Non sono sicuro di quale sia il punto della tua domanda: se vuoi sapere se ci sono altre opzioni, la risposta è sicuramente ancora (potresti, ad esempio, scrivere su un file e invocare un'applicazione esterna su elaboralo - o potresti usare JNI senza buffer diretti). Ma se vuoi un'interfaccia strettamente accoppiata e altamente performante tra codice Java e C ++, JNI insieme ai buffer diretti, sarà lo strumento da usare.
Altri suggerimenti
JNI è facile da rovinare, quindi le persone tendono a lamentarsene. Ma è un'opzione eccellente ed estremamente stabile, se eseguita correttamente.
È possibile utilizzare socket (che accetta la connessione da locale) ma sarà più efficace sui sistemi * nix, immagino.
Se non hai bisogno della transcodifica in tempo reale, sceglierei l'approccio buffer. In questo modo avrai un controllo migliore e sarai sicuro che nessun byte verrà perso.