HomeO mnie

Strumieniowanie na ratunek

By Robert Duraj
Published in Node.js
June 04, 2024
1 min read
Strumieniowanie na ratunek

Temat zarządzania pamięcią w programowaniu pojawia się często dopiero wtedy, gdy zaczyna nam jej brakować. 😅 Strumieniowanie w Node.js, to jeden z tych konceptów, które mogą nam podreperować jej stan niskim kosztem.

Zobaczmy przykład funkcji readFileSync, która - wszystkim dobrze znana - odczytuje zawartość pliku:

const file = fs.readFileSync("./csv/a1.csv", "utf8")
const data = file.split(os.EOL)

Problem w tym, że gdy w tym przykładzie wywołujemy metodę split, żeby rozbić plik csv na poszczególne wiersze, cały plik ładowany jest do naszej pamięci od razu. Niezależnie od tego, czy potrzebujemy dostać się do pierwszego czy do ostatniego wiersza w csv. Mało tego - przetwarzanie pliku rozpocznie się dopiero, gdy całość będzie zaalokowana w pamięci.

Zmiana kodu na stream powoduje, że dane są doładowywane stopniowo, a procesowanie uruchamia się natychmiastowo. Pamięć nie będzie obciążana danymi, których nie procesujemy. A jak to wygląda w kodzie? Deklaratywnie i elegancko. 😎

const file = path.resolve(__dirname, "./csv/a1.csv")
const stream = fs.createReadStream(file)
.pipe(csv())
stream.on("data", row => {
console.log(row)
stream.end()
})

Warto rozważyć tę drobną zmianę i oszczędzić sobie często trudnych do znalezienia wycieków.


Tags

#nodejs#javascript

Share

Previous Article
Kata - przyjaciel każdego developera

Robert Duraj

Software Engineer

Related Posts

Node.js... A na co to komu?!
July 24, 2024
1 min
© 2024, All Rights Reserved.
Powered By

Social Media

linkedingithubtwitter