So I was checking out c3dl and they exclusively use drawArrays in their engine. Until now I had been using drawElements and now I am questioning which is the better choice.

With drawArrays I would think that you're vertex/normal/texcoord buffers are going to be larger since you cant index into them and thus consume more memory. However with this you don't have to store an indices buffer at all which saves memory, where as with drawElements you have to store and bind an indices buffer everytime.

For example:
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, getIndexBuffer());
could be removed from the render calls all together when using drawArrays over drawElements. It may seem like a negligable difference but if you are drawing 50 objects 60 times a second thats 3000 bind and 3000 accessor calls saved per second.

Could anyone share what they think is the most efficient/preferred format and for what reasons?

Thanks!