diff --git a/Makefile b/Makefile index ac1c1910..389c91a1 100644 --- a/Makefile +++ b/Makefile @@ -31,3 +31,10 @@ release: tar -zcvf ${BINARY}-linux-amd64.tar.gz ${BINARY}-linux-amd64; \ tar -zcvf ${BINARY}-darwin-amd64.tar.gz ${BINARY}-darwin-amd64; \ zip -r ${BINARY}-windows-amd64.exe.zip ${BINARY}-windows-amd64.exe; + +bench-diff: + go test -bench . -count 5 > bench_current.txt + git checkout main + go test -bench . -count 5 > bench_main.txt + benchstat bench_main.txt bench_current.txt + git checkout - diff --git a/read.go b/read.go index d0e506a0..14e7fbf0 100644 --- a/read.go +++ b/read.go @@ -223,30 +223,30 @@ func readNativeFrames(d dicomio.Reader, parsedData *Dataset, fc chan<- *frame.Fr Data: make([][]int, int(pixelsPerFrame)), }, } + buf := make([]int, int(pixelsPerFrame)*samplesPerPixel) for pixel := 0; pixel < int(pixelsPerFrame); pixel++ { - currentPixel := make([]int, samplesPerPixel) for value := 0; value < samplesPerPixel; value++ { if bitsAllocated == 8 { val, err := d.ReadUInt8() if err != nil { return nil, bytesRead, err } - currentPixel[value] = int(val) + buf[(pixel*samplesPerPixel)+value] = int(val) } else if bitsAllocated == 16 { val, err := d.ReadUInt16() if err != nil { return nil, bytesRead, err } - currentPixel[value] = int(val) + buf[(pixel*samplesPerPixel)+value] = int(val) } else if bitsAllocated == 32 { val, err := d.ReadUInt32() if err != nil { return nil, bytesRead, err } - currentPixel[value] = int(val) + buf[(pixel*samplesPerPixel)+value] = int(val) } } - currentFrame.NativeData.Data[pixel] = currentPixel + currentFrame.NativeData.Data[pixel] = buf[pixel*samplesPerPixel : (pixel+1)*samplesPerPixel] } image.Frames[frameIdx] = currentFrame if fc != nil { diff --git a/read_test.go b/read_test.go index 03001893..8cba5b3d 100644 --- a/read_test.go +++ b/read_test.go @@ -282,7 +282,7 @@ func TestReadNativeFrames(t *testing.T) { t.Errorf("TestReadNativeFrames(%v): did not get expected error. got: %v, want: %v", tc.data, err, tc.expectedError) } - if diff := cmp.Diff(pixelData, tc.expectedPixelData); diff != "" { + if diff := cmp.Diff(tc.expectedPixelData, pixelData); diff != "" { t.Errorf("TestReadNativeFrames(%v): unexpected diff: %v", tc.data, diff) } })