Now I need to read/write a large file(15G),I want to accelerate the speed of reading /writing file, I find that the map function of QFilecan do it,I try it as follows,but I find that speed is the same as the common read/write file,why?

Qt Code:
  1. QFile objInputFile("test.sgy");
  2. if (!objInputFile.open(QIODevice::Unbuffered | QIODevice::ReadOnly))
  3. {
  4. return false;
  5. }
  6.  
  7. QFile objOutputFile("out.sgy");
  8. if (!objOutputFile.open(QIODevice::Unbuffered | QIODevice::WriteOnly | QIODevice::Truncate))
  9. {
  10. objInputFile.close();
  11. return false;
  12. }
  13.  
  14. uchar * pData = NULL;
  15. qint64 m_qint64FileOffset = 0;
  16. qint64 m_qint64InputFileSize = objInputFile.size();
  17. qint64 m_unBlockSize=m_qint64InputFileSize;
  18.  
  19. qint64 unTmpBlockSize = m_qint64InputFileSize/10;
  20.  
  21. while(m_qint64FileOffset < m_qint64InputFileSize)
  22. {
  23. if (m_qint64InputFileSize-m_qint64FileOffset <unTmpBlockSize)
  24. unTmpBlockSize=m_qint64InputFileSize-m_qint64FileOffset;
  25. pData = objInputFile.map(m_qint64FileOffset,unTmpBlockSize);
  26.  
  27. if (pData == NULL)
  28. {
  29. objInputFile.close();
  30. objOutputFile.close();
  31. return false;
  32. }
  33. if (objOutputFile.write((char*)pData,unTmpBlockSize) == -1)
  34. {
  35. objInputFile.close();
  36. objOutputFile.close();
  37. return false;
  38. }
  39.  
  40. m_qint64FileOffset += unTmpBlockSize;
  41. if (!objInputFile.unmap(pData))
  42. {
  43. objInputFile.close();
  44. objOutputFile.close();
  45. return false;
  46. }
  47. }
  48.  
  49. objInputFile.unmap(pData);
  50. objInputFile.close();
  51. objOutputFile.close();
  52. return true;
To copy to clipboard, switch view to plain text mode