Оптимизация работы с QAxObject Word.Application



  • При переборе файлов более чем несколько страниц(я тестил 75 страниц мелкого текста, по логу там 33к слов) за минуту перебирается 2к слов, далее после где-то 5к скорость практически по экспоненте уменьшается и после 8к ну практически 5 слов в секунду, а после 10к 1-2 слова в секунду, и файл в 33к слов у меня перебирался 2 часа 20 минут.
    Код таков:

    #include <QGuiApplication>
    
    #include <QDebug>
    #include <QAxObject>
    #include <QColor>
    #include <QDomDocument>
    #include <QXmlStreamWriter>
    #include <QFile>
    
    #define _ qDebug() <<
    
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
        QAxObject *m_word = new QAxObject("Word.Application", 0);
    //    m_word->setProperty("Visible", true);
        QAxObject *documents = m_word->querySubObject("Documents");
        QAxObject *newDocument = documents->querySubObject("Add(QVariant)", QVariant("D:\\test.docx"));
    
        QAxObject *words = newDocument->querySubObject("Words");
        int countWord = words->property("Count").toInt();
    
        _ countWord;
        for (int a = 1; a <= countWord; a++)
        {
            QAxObject *word = words->querySubObject("Item(int)", a)->querySubObject("FormattedText");
            QAxObject *font = word->querySubObject("Font");
    
            _ a;
    
            if (word->property("Text").toString() == "\r")
                _ "";
    
            delete font;
            delete word;
        }
    
        m_word->dynamicCall("Quit()");
    
        delete words;
        delete newDocument;
        delete documents;
        delete m_word;
    
        return 0;
    
    
        return app.exec();
    }
    

    В целом в коде простой цикл, других вариантов перебора я не знаю, собственно вопрос в оптимизации такого вот перебора.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.