Как ускорить приложение LogParser в ASP.NET - PullRequest
2 голосов
/ 08 марта 2012

Я разработал приложение ASP.NET, которое получает данные от пользователя, которые в основном представляют собой SQL-запросы, выполняемые LogParser.(Этот ввод хранится в строке «sql1». Он работает, но работает медленно. Для файла журнала объемом 60 МБ я даже получил исключение вне памяти. Ниже я поделился своим кодом, любые идеи по ускорениювверх? Есть ли способ напрямую вставить объект ILogRecordSet в DataGrid без предварительного преобразования его в DataSet?

            LogQuery oLogQuery = new LogQuery();
            COMIISW3CInputFormat eventLog = new COMIISW3CInputFormat();

            ILogRecord numReq = null;
            ILogRecordSet numSet = null;

            numSet = oLogQuery.Execute(sql1, eventLog);
            DataTable queryTable = new DataTable("Query");
            for (int i = 0; i < numSet.getColumnCount(); i++)
            {
                DataColumn col = new DataColumn();
                col.ColumnName = numSet.getColumnName(i);
                switch (numSet.getColumnType(i))
                {
                    case 1:
                        col.DataType = Type.GetType("System.Int32");
                        break;
                    case 2:
                        col.DataType = Type.GetType("System.Double");
                        break;
                    case 4:
                        col.DataType = Type.GetType("System.DateTime");
                        break;
                    default:
                        col.DataType = Type.GetType("System.String");
                        break;
                }
                queryTable.Columns.Add(col);
            }

            while (!numSet.atEnd())
            {
                numReq = numSet.getRecord();
                DataRow row = queryTable.NewRow();

                for (int i = 0; i < numSet.getColumnCount(); i++)
                    row[i] = HttppUtility.HtmlEncode(Convert.ToString(numReq.getValue(i)));

                queryTable.Rows.Add(row);
                numSet.moveNext();
            }

            DataSet ds = new DataSet();
            ds.Tables.Add(queryTable);

            QueryGrid.DataSource = ds;
            QueryGrid.DataBind();
...