L'STL è abbastanza efficiente per i dispositivi mobili?


9

Quando si tratta di sviluppo di giochi per dispositivi mobili su iOS e Android NDK, alcuni sviluppatori scrivono i propri contenitori C ++, mentre altri sostengono che STL è più che adeguato per lo sviluppo di giochi per dispositivi mobili (ad esempio, l'autore di iPhone 3D Programming utilizza STL anziché Objective- C nei suoi esempi: la sua difesa è che STL non è più lento di Objective-C).

Quindi ci sono anche sviluppatori mobili che abbandonano del tutto C ++ e sviluppano giochi interamente (o principalmente) nel linguaggio C (C89 / C90).

Quali sono i vantaggi e gli svantaggi di ciascun approccio?


4
Le principali critiche contro STL sono i suoi imprevedibili schemi di allocazione della memoria e il supporto del compilatore: entrambi i problemi possono essere risolti utilizzando un'alternativa STL, ad esempio EASTL o STLPort.
Raphael R.,

1
Diverse risposte a questa domanda: gamedev.stackexchange.com/questions/268/… tocca le piattaforme mobili e dovrebbe darti la tua risposta.
Tetrad,

5
Ho il sospetto che molte persone "abbandonino" (più come se non usassero mai) il C ++ su piattaforme mobili è meno su STL e più sull'imbarazzo di Objective-C ++ (e il supporto C ++ è in ritardo in generale sulla toolchain di Apple).

La vera domanda è: puoi scrivere meglio? Farai meglio a capire l'STL; e nei casi in cui non fa quello che vuoi, implementando il comportamento che richiedi.
deceleratedcaviar

Risposte:


6

Lascia che ti dica una cosa prima. Il C ++ è più veloce delle chiamate Objective-C. Objective-C utilizza i sistemi di passaggio dei messaggi, quindi avrà un sovraccarico di runtime rispetto al C ++. Dai un'occhiata ad alcuni dei confronti qui .

Venendo allo sviluppo generale di "app" per iOS, ha senso usare le funzioni integrate di Objective-C poiché le prestazioni non possono essere in un certo senso un criterio. Ma nello sviluppo del gioco, dobbiamo considerare questi risultati.

Quando stavo lavorando al mio precedente progetto (Robokill), abbiamo ottimizzato la maggior parte del codice laddove mai necessario con chiamate in C semplice (abbiamo convertito la nostra classe di particelle Objective-C in una classe C ++). Oppure puoi anche usare le funzioni di runtime Objective-C per le chiamate C dirette.

Venendo alla tua domanda, ecco la mia risposta: sì, STL è ben ottimizzato per il suo scopo . Anche se il codice di implementazione non è molto leggibile, è interessante controllare l'implementazione una volta.

Tuttavia, possiamo ottimizzare il codice Objecive-C in una certa misura, pre-memorizzando nella cache i puntatori a funzione ed effettuando chiamate con il runtime Objective-C.

Spero che sia di aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.