[Bug 21245] file operations are very slow or hangs solidworks

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Jul 7 05:10:41 CDT 2010


http://bugs.winehq.org/show_bug.cgi?id=21245





--- Comment #9 from denis bonnenfant <denis.bonnenfant at diderot.org>  2010-07-07 05:10:40 ---
I investigated the problem a little bit further and found that the function
SmallBlockChainStream_GetNextBlockInChain called in the first loop in
SmallBlockChainStream_WriteAt is responsive : it calls BlockChainStream_ReadAt
for reading 4 bytes (Sizeof(DWORD)) at a time, so it is particularly
unefficient...

trace:storage:SmallBlockChainStream_WriteAt +
trace:storage:SmallBlockChainStream_GetNextBlockInChain ---------
trace:storage:BlockChainStream_ReadAt (0x116a2290)-> 7932 0x32d54c 4 0x32d548
trace:storage:BlockChainStream_ReadAt block 2545
trace:storage:ImplBIGBLOCKFILE_ReadAt (0x116a2210)-> 1303804 0x32d54c 4
0x32d4e8
trace:storage:ImplBIGBLOCKFILE_ReadAt page 1,  offset 255228, bytes_from_page
4, bytes_left 4
trace:storage:ImplBIGBLOCKFILE_ReadAt finished
trace:storage:SmallBlockChainStream_WriteAt +
trace:storage:SmallBlockChainStream_GetNextBlockInChain ---------
trace:storage:BlockChainStream_ReadAt (0x116a2290)-> 7936 0x32d54c 4 0x32d548
trace:storage:BlockChainStream_ReadAt block 2545
trace:storage:ImplBIGBLOCKFILE_ReadAt (0x116a2210)-> 1303808 0x32d54c 4
0x32d4e8
trace:storage:ImplBIGBLOCKFILE_ReadAt page 1,  offset 255232, bytes_from_page
4, bytes_left 4
trace:storage:ImplBIGBLOCKFILE_ReadAt finished



while ( (blockNoInSequence > 0) &&  (blockIndex != BLOCK_END_OF_CHAIN))
  {
    if(FAILED(SmallBlockChainStream_GetNextBlockInChain(This, blockIndex,
&blockIndex)))
      return STG_E_DOCFILECORRUPT;
    blockNoInSequence--;
  }

As this loop seems to be here just to verify data integrity, removing it is
harmful, and made huge speed improvement !

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list