I tried it on Windows 7 and it does indeed work on the order of 10 seconds (I don't have time utility on windows). Very bizarre. Same arguments. May I ask what system you were testing on?
Here's some more testing I did:
I converted the dataset to be little endian explicit
Code: Select all
find . -type f -print0 | xargs -0 -I file dcmconv --write-xfer-little file file
I ran storescu with debug enabled, it doesn't appear to be converting transfer syntax. Sample debug output
Code: Select all
I: Sending file: /tmp/test_dcm/<snip>
D: DcmItem::checkTransferSyntax() TransferSyntax="Little Endian Explicit"
I: Transfer Syntax: LittleEndianExplicit -> LittleEndianExplicit
I: Sending Store Request: MsgID 170, (CT)
D: ===================== OUTGOING DIMSE MESSAGE ====================
D: Message Type : C-STORE RQ
D: Message ID : 170
D: Affected SOP Class UID : CTImageStorage
D: Affected SOP Instance UID : <snip>
D: Data Set : present
D: Priority : low
D: ======================= END DIMSE MESSAGE =======================
I: Received Store Response
D: ===================== INCOMING DIMSE MESSAGE ====================
D: Message Type : C-STORE RSP
D: Presentation Context ID : 41
D: Message ID Being Responded To : 170
D: Affected SOP Class UID : CTImageStorage
D: Affected SOP Instance UID : <snip>
D: Data Set : none
D: DIMSE Status : 0x0000: Success
D: ======================= END DIMSE MESSAGE =======================
PDU set to 16k does appear to be faster on this system. I got it down to 100 seconds (from 180).
I don't think it's disk read issue since this executes in no time on the folder full of dicom.
Code: Select all
time find . -type f -print0 | xargs -0 -I file cat file > /dev/null