Adap.TV ha scelto C ++ per sviluppare il suo software. Tuttavia, hanno deciso di non utilizzare i contenitori standard 1 e di aumentare le prestazioni per motivi di prestazioni, poiché ne hanno scritto blog nel seguente articolo:
Dice (sottolineatura mia),
There are several rules that we are obeying in order to keep the performance high;
Avoid malloc(), calloc() or new
No free() or delete (and no need for tcmalloc)
No STL, boost etc.
Avoid locking as much as possible
# threads = # CPU cores (hyperthread is a trade-off between latency and throughput)
Come sappiamo, i contenitori standard usano allocatori che usano new
e delete
internamente che sono costose operazioni. Quindi, per evitarli, AdapTv ha evitato l'uso di contenitori standard. Invece di usare new
e delete
(ripetutamente), essi riutilizzano la memoria (il che implica che usano un pool di memoria).
Mi chiedo cosa impedisca loro di utilizzare gli allocatori personalizzati per i contenitori standard! L'allocatore personalizzato potrebbe utilizzare internamente un pool di memoria che significa riutilizzo della memoria . Quindi non vedo come i contenitori standard danneggerebbero le prestazioni.
O mi manchi qualcosa? Non possiamo evitare di usare new
e delete
con i contenitori standard? C'è qualche altra ragione per cui qualcuno dovrebbe evitare l'uso di contenitori standard? O è semplicemente una mancanza di conoscenza da parte loro che ha portato a questa decisione?
E che ne dici di boost?
1) Suppongo che STL intendessero contenitori standard C ++ , non STL di SGI .