I have the following piece of code:

Qt Code:
  1. void Class::processElements(const QString & aInputFile,
  2. const QString & aNodeName)
  3. {
  4. QFile queryFile(QString(":queries/") + "syncronizationresponse.xq");
  5. if (queryFile.open(QFile::ReadOnly))
  6. {
  7. QString queryString(queryFile.readAll());
  8.  
  9. QFile sourceDocument(aInputFile);
  10. if (sourceDocument.open(QIODevice::ReadOnly))
  11. {
  12. //Create query
  13. QXmlQuery query;
  14. query.bindVariable("inputDocument", &sourceDocument);
  15. query.bindVariable("bindedVariable", QVariant(aNodeName));
  16. query.setQuery(queryString);
  17.  
  18. if(query.isValid())
  19. {
  20. //Evaluate
  21. QByteArray byteArray;
  22. QBuffer buffer(&byteArray);
  23. if (buffer.open(QIODevice::ReadWrite))
  24. {
  25. QXmlSerializer xmlSerializer(query, &buffer);
  26. if (query.evaluateTo(&xmlSerializer))
  27. {
  28. //Process the stuff in the byteArray
  29. }
  30. else
  31. qDebug() << "Evaluation to serializer failed";
  32. }
  33. else
  34. {
  35. qDebug() << "Opening output buffer failed " << buffer.errorString();
  36. }
  37. //Starting to close buffer for "ROUTE" "ke 8. huhti 06:53:37 2009"
  38. buffer.close();
  39. //Finished closing buffer for "ROUTE" "ke 8. huhti 06:53:37 2009"
  40. }
  41. else
  42. {
  43. qDebug() << "XmlQuery failed";
  44. }
  45. }
  46. else
  47. {
  48. qDebug() << "Opening input file failed " << sourceDocument.errorString();
  49. }
  50. //Starting to close source document for "ROUTE" "ke 8. huhti 06:53:46 2009"
  51. sourceDocument.close();
  52. //Finished closing source document for "ROUTE" "ke 8. huhti 06:53:46 2009"
  53. }
  54. else
  55. {
  56. qDebug() << "Opening query file failed " << queryFile.errorString();
  57. }
  58. //Starting to close query file for "ROUTE" "ke 8. huhti 06:53:46 2009"
  59. queryFile.close();
  60. //Finished closing query file for "ROUTE" "ke 8. huhti 06:53:46 2009"
  61. }
To copy to clipboard, switch view to plain text mode 

Who can tell me why the heck it takes 9 seconds from buffer.close(); to sourceDocument.close(); ?? There should not be anything that slows it down? Unless it has something to do with signals that the QBuffer emits when close is called? Does anyone know what makes close call to QBuffer so slow??

BR, Kimmo