What is the messages per second (msgs/s) that the current code can achieve?

If your parsing/processing code can't handle more than 25 messages a second, then no amount of buffering is going to help.
case Can_Msgs.mMAP_SPEED_INFO.msg_id: 
    RawCanData = xDataConv.data_to_ui64(CanData);
    i = filt_CParsDbcFile.Search4Message(uMsgId);
    if ( i != -1 )
        Can_Msgs.mMAP_SPEED_INFO.last_receive_time = GetTickCount();
        j = filt_CParsDbcFile.Search4Signal(uMsgId,"MapCrntPstSpdLimVld" );
        if( j != -2 )
            Startbit = (63-((int)filt_CParsDbcFile.m_pSigDescs[j].startByte*8))-(7-(int)filt_CParsDbcFile.m_pSigDescs[j].startBit);
            Can_Msgs.mMAP_SPEED_INFO.MapCrntPstSpdLimVld = xDataConv.get_bool(RawCanData, Startbit);
That code needs to be profiled to see what's taking so long. If that code can't handle 25 msgs/s, then which part is taking so long?