Currently when BSON arrays are output the names of the indexes (as required by the BSON spec) are computed by calling Int32.ToString and then encoding the string to UTF8.
It should be considerably faster to cache the UTF8 values of commonly used index names (say the first 1000 or so).