Интересный факт.
От: Saddam Россия http://saddam.narod.ru
Дата: 21.09.02 16:15
Оценка:
Две программы. Обе заполняют в Excel 15 тысяч ячеек. Одна написана на MSVC 6.0 с использованием ATL.
Та часть, которая заполняет:

OleInitialize(NULL);
    _Application Excel;
    Workbooks WorkBooks;
    _Workbook book;
    Worksheets Sheets;
    _Worksheet Sheet;
    COleVariant Cell;
    CString SCell;
    if(!Excel.CreateDispatch("Excel.Application"))
        {
            AfxMessageBox("Couldn't start Excel.");
        }
        else
        {
            //Make Excel Visible and display a message
            Excel.SetVisible(TRUE);
            WorkBooks=Excel.GetWorkbooks(); 
            book=WorkBooks.Add(NOPARAM); 
            Sheets=book.GetWorksheets();
            Sheet=Sheets.GetItem(COleVariant((short)1));
            CTime start=CTime::GetCurrentTime();
            m_Start.SetWindowText(start.Format("%H:%M:%S"));
            for (char i='A'; i<'P';i++)
                for (short j=1;j<=1000;j++)
                {
                    SCell.Format("%c%i",i,j);
                    Cell=SCell;
                    ((Range)Sheet.GetRange(Cell,Cell)).SetValue(Cell);
                }
            CTime stop=CTime::GetCurrentTime();
            m_Stop.SetWindowText(stop.Format("%H:%M:%S"));
            m_Diff.SetWindowText((stop-start).Format("%H:%M:%S"));
        }
    OleUninitialize();

И вторая, написана на BCB 5.0 с использованием OLE-вызовов, примеров море в интернете, приводить не буду.
Так вот... ATL-вариант делает это за 1 минуту 15 секунд, а OLE за 47 секунд, хотя, даже Inprise утверждает, что ATL круче OLE в плане новизны и правильности. Может я что-то не так сделал?
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.