asp.net MVC y $ .ajax agregaron sobrecarga de rendimiento

Me he topado con un problema muy curioso de bajo rendimiento cuando el control MVC de asp.net es llamado por la función jquery $ .ajax. El control realiza una acción de la base de datos que toma 403 ms, pero la llamada total de $ .ajax es de 3400 ms según Firebug, que es un poco de sobrecarga adicional. Necesito optimizar el rendimiento, pero no tengo claro de dónde proviene esta sobrecarga.

Aquí está el código. En mi controlador, tengo

 public JsonResult SetSearchResults(Criteria searchCriteria)
 {

       SearchResult myReportsResult = _repository.GetResults(searchCriteria);    

       //the statement above takes 403 ms

       return Json(myReportsResult);
  }





 public  SearchResult GetResults(SearchCriteria searchCriteria)
  {
        SearchResult result = SearchResult();

         DataTable dbResults = _da.GetDBResults(searchCriteria);       


        List<IncidentReportHeader> irs = new List<IncidentReportHeader>();            

        for (int i = 0; i < dbResults.Rows.Count; i++)
        {
            IncidentReportHeader ir = new IncidentReportHeader();

            //populate all the properties of the ir object here,                

            irs.Add(ir);
        }

        result.Reports = irs;       
        return result;        
}

    //models
    public class SearchResult
    {

        private List<IncidentReportHeader> _res;
        private int _numOfPages=0;
        private int _recordsPerPage=0;

        public List<IncidentReportHeader> Reports {
            get { return _res; }
            set
            {
                _res = value;              
            }        
        }           


        public SearchResult()
        {
            _res = new List<IncidentReportHeader>();
        }
    }
}




//db call
   public DataTable GetDBResults(SearchCriteria searchCriteria)
       {
         //add all params to the db object needed for the stored procedure here



            DataTable dt = _db.ExecuteStoredProc("myDB.PACKAGE_NAME.stored_proc", 2000, ref  _spParams, ref _spResultVariables);
           return dt;

}

en mi JS

function SearchIncidentReports() {

    //pack the  searchCriteria object here
    var searchCriteria = ...

    var start = new Date().getTime();

    $.ajax({
        contentType: 'application/json, charset=utf-8',
        type: "POST",
        url: myController/SetSearchResults,
        data: JSON.stringify({ searchCriteria: searchCriteria }),
        cache: false,
        dataType: "json",

        success: function (response) {

            var got_data = new Date().getTime();
            var diff1 = got_data - start;
            alert("data loaded in: " + diff1 + " ms");

             // do whatever you need with the data here.  
             // diff1 = 3400ms which is what Firebug shows too

        },

        error: function (xhr, ajaxOptions, thrownError) {
            var result = $.parseJSON(xhr.responseText);
            alert(result.ErrorMessage);
        }

    });
    return false;
}

Otra nota, cuando la llamada a la base de datos se elimina y relleno el objeto manualmente, el rendimiento es súper rápido.

Parece que pasar de 403 ms a 3400 ms es totalmente erróneo y claramente tiene una sobrecarga injustificada. ¿Puede por favor indicar qué se está haciendo mal aquí? Es bastante básico y realmente no puedo evitar ir a la base de datos.

Intenté que el Control devolviera el conjunto vacío (ActionResult) en lugar de JsonResult pero tenía el mismo problema.

¿Es este un problema MVC asp.net? gracias por adelantado

EDITADO PARA AÑADIR

También tengo una acción que devuelve un archivo de Excel y exactamente la misma operación de base de datos en su interior. El archivo regresa en 410 ms y no usa la función $ .ajax. Parece que $ .ajax está causando el retraso de alguna manera. Todo lo que necesito es obtener los datos de la base de datos, y normalmente es muy rápido.

Agregué el interior del código del controlador porque alguien lo solicitó, pero repetiré que el interior (sí, el total dentro de la llamada del Controlador) toma 403 ms. Claramente, el problema no está en el servidor o en la llamada a la base de datos. Me parece que es entre cliente y servidor. ¿Alguna ayuda?

En caso de que alguien decida ayudarme 1) En Firebug, el tiempo total que tomó POST con Action GetResults es 3.54s. 2) Cuando navego a Net-> All in Firebug, donde se muestra el desglose de la solicitud, veo que el mayor tiempo se pasa esperando (3.5s).

Parece que se gasta entre 3.5s y 403ms cuando se comunica entre el servidor y el cliente, pero ¿dónde y por qué?

Respuestas a la pregunta(1)

Su respuesta a la pregunta