Skip to content

Commit feef1f1

Browse files
author
Alexis Girault
committed
Do not use async code when unnecessary to improve performance
1 parent 18b6517 commit feef1f1

File tree

1 file changed

+14
-24
lines changed

1 file changed

+14
-24
lines changed

examples/Dicom/src/parseDicomFiles.js

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -245,13 +245,10 @@ class DICOMSeries extends DICOMEntity {
245245
const m = Number(meta.RescaleSlope)
246246
const hasIntercept = !Number.isNaN(b) && b !== 0
247247
const hasSlope = !Number.isNaN(m) && m !== 1
248-
let rescaleFunction
249-
if (hasIntercept && hasSlope) {
250-
data = data.map((value) => m * value + b)
251-
} else if (hasIntercept) {
252-
data = data.map((value) => value + b)
253-
} else if (hasSlope) {
254-
data = data.map((value) => m * value)
248+
if (hasIntercept || hasSlope) {
249+
for (let i = 0; i < data.length; i++) {
250+
data[i] = m * data[i] + b
251+
}
255252
}
256253

257254
return {
@@ -348,11 +345,10 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
348345
const dataSet = dicomParser.parseDicom(byteArray)
349346

350347
// Read metadata (recursive)
351-
async function readTags(dataSet) {
348+
function readTags(dataSet) {
352349
const metaData = {}
353350

354-
// Read value for a single tag
355-
async function readTag(tag) {
351+
for (const tag in dataSet.elements) {
356352
const tagGroup = tag.substring(1,5)
357353
const tagElement = tag.substring(5,9)
358354
const tagKey = ("("+tagGroup+","+tagElement+")").toUpperCase();
@@ -362,12 +358,12 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
362358

363359
if (element.items) {
364360
metaData[tagName] = []
365-
const readTagsOfItems = element.items.map(async (item) => {
366-
const itemMetaData = await readTags(item.dataSet)
367-
metaData[tagName].push(itemMetaData)
368-
})
369-
await Promise.all(readTagsOfItems)
370-
return
361+
for (let j = 0; j < element.items.length; j++) {
362+
const innerDataSet = element.items[j].dataSet
363+
const innerMetaData = readTags(innerDataSet)
364+
metaData[tagName].push(innerMetaData)
365+
}
366+
continue
371367
}
372368

373369
let value = undefined
@@ -425,7 +421,7 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
425421
} else if (element.length === 4) {
426422
value = dataSet.uint32(tag)
427423
} else {
428-
return
424+
continue
429425
}
430426
break
431427
default: //string
@@ -437,15 +433,9 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
437433
metaData[tagName] = value
438434
}
439435

440-
// Set up promises for all tags
441-
const tags = Object.keys(dataSet.elements)
442-
const readAllTags = tags.map(readTag)
443-
444-
// Read all tags
445-
await Promise.all(readAllTags)
446436
return metaData
447437
}
448-
const metaData = await readTags(dataSet)
438+
const metaData = readTags(dataSet)
449439

450440
// Organize metadata
451441
const patientId = metaData[DICOMPatient.primaryTag]

0 commit comments

Comments
 (0)