Javascript External Sort Algoritması

Herkese merhaba, Javascript yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda sıralama algoritmalarından biri olan external sort algoritmasını anlatacağım. Hadi başlayalım !
Table of Contents
External Sort Algoritması
External Sort Algoritması, büyük boyutlu verilerin sıralanması için kullanılan bir algoritmadır. Bu algoritma, belleğe sığmayacak kadar büyük verileri sıralamak için harici bellek kullanır. İlk adımda, veriler harici belleğe bölünür ve her bir bölüm ayrı ayrı sıralanır. Sonra, sıralanmış veriler birleştirilerek son sıralama işlemi gerçekleştirilir.
Uygulama Adımları
JavaScript’te External Sort Algoritması’nı uygulamak için bazı adımlar şunlardır:
- Verileri harici belleğe bölün
- Her bir bölümü ayrı ayrı sırala
- Sıralanmış bölümleri birleştir
- Son sıralama işlemini gerçekleştir
Javascript External Sort Algoritması Kodu
Aşağıda JavaScript ile External Sort Algoritması’nı uygulamak için bir örnek kod verilmiştir:
const fs = require('fs');
const readline = require('readline');
const { promisify } = require('util');
const { join } = require('path');
const TMP_DIR = 'tmp';
const CHUNK_SIZE = 100000;
const INPUT_FILE = 'input.txt';
const OUTPUT_FILE = 'output.txt';
const readInterface = readline.createInterface({
input: fs.createReadStream(INPUT_FILE),
output: process.stdout,
console: false
});
const writeFile = promisify(fs.writeFile);
async function externalSort() {
let chunk = [];
let chunkCount = 0;
let fileCount = 0;
for await (const line of readInterface) {
chunk.push(line);
if (chunk.length >= CHUNK_SIZE) {
chunk.sort();
const filePath = join(TMP_DIR, `chunk-${chunkCount}.txt`);
await writeFile(filePath, chunk.join('\n'));
chunkCount++;
chunk = [];
}
}
if (chunk.length > 0) {
chunk.sort();
const filePath = join(TMP_DIR, `chunk-${chunkCount}.txt`);
await writeFile(filePath, chunk.join('\n'));
}
const streams = [];
for (let i = 0; i < chunkCount + 1; i++) {
const filePath = join(TMP_DIR, `chunk-${i}.txt`);
streams.push(fs.createReadStream(filePath));
}
const outputStream = fs.createWriteStream(OUTPUT_FILE);
const mergeSort = require('merge-sort-stream');
mergeSort(streams, outputStream);
}
externalSort();
Bu kod örneği, belirtilen girdi dosyasından verileri okur, her 100.000 satırda bir verileri sıralar ve geçici dosyalara yazar. Sonra, geçici dosyaları okur, sıralar ve birleştirir. Son olarak, çıktı dosyasına sıralanmış verileri yazar.
Bu örnek kodda merge-sort-stream modülü kullanılarak sıralama işlemi gerçekleştirilir. Bu modül, birden çok akıştan veri okur ve bunları birleştirir.
Algoritmayı Optimize Etme
Bu kod örneği, daha büyük boyutlu verileri sıralamak için kullanılabilir. Ancak, büyük boyutlu verileri işlemek, sabit disk alanının yüksek kullanımına neden olabilir ve bu da performans sorunlarına yol açabilir. Bu nedenle, algoritmayı optimize etmek için bazı yöntemler kullanılabilir. Örneğin:
- Daha büyük bellekler kullanarak, verilerin tamamını bellekte tutmak mümkün olabilir. Bu, sıralama işlemini daha hızlı hale getirebilir.
- Paralel işleme tekniklerini kullanarak, sıralama işlemini daha hızlı ve verimli hale getirebilirsiniz. Örneğin, verileri birden çok işlemci veya bilgisayarda paralel olarak işleyebilirsiniz.
- Verileri sıralamadan önce bir ön işlem gerçekleştirebilirsiniz. Örneğin, verileri önceden gruplayabilir veya sıkıştırabilirsiniz. Bu, verileri daha küçük parçalara bölebilir ve sıralama işlemini daha hızlı hale getirebilir.
- Sıralama işlemini yaparken, disk erişimini minimize etmek için sıralama algoritmasını optimize edebilirsiniz. Örneğin, sıralama işlemi sırasında disk erişimini azaltmak için, verileri tampon belleğe yükleyebilirsiniz.
Bu örnek kodda, sıralama işlemi için merge-sort-stream modülü kullanılmış olsa da, diğer sıralama algoritmaları da kullanılabilir. Örneğin, Quick Sort veya Heap Sort gibi algoritmalar da kullanılabilir.
Sonuç
Sonuç olarak, JavaScript ile External Sort Algoritması’nı uygulamak, büyük boyutlu verileri sıralamak için etkili bir yol olabilir. Ancak, verileri işlemek için yeterli bellek alanının bulunması gerektiğinden ve performans sorunlarına neden olabileceğinden, bu algoritmayı kullanmadan önce veri boyutuna ve kaynaklara dikkatlice gözden geçirmek önemlidir.
Evet Javascript ile external sort algoritması bu şekilde idi. Tüm Javascript yazılarımıza buraya, diğer sıralama algoritmaları yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.