Ronald Rajagukguk

My Journey in .NET World
See also: Other Geeks@INDC

My First 20 minutes using Microsoft Parallel Extensions

Tadi malem karena gak bisa tidur jadi ya gua buka laptop. Ubek-ubek ternyata ada barang baru yang udah ampir 1 bulan yang lalu didonlot yaitu Paralel Extensions December 2007 CTP. Karena penasaran langsung aja install dan baca-baca dokumentasinya. Ternyata ini adalah SDK untuk maen-maen dengan eksekusi program yang bersifat paralel  dengan menggunakan .NET, ya cocok lah untuk era sekarang yang mana prosesor bukan maen di kecepatan lagi tapi udah maen di jumlah prosesor. okeh karena udah malem, tanpa banyak ambil pusing explorasi pun dimulai.

Karena bosen baca-baca tulisan doank ya udah konkrit aja lah, langsung buka VS 2008 dan mulai coding. pertama-tama coding LINQ dulu, penasaran pengen liat fitur paralel ini di linq. langsung aja tulis kode kayak gini :

var data2 = (new string[4]{"satu","dua","tiga","empat"}).AsParallel();
var hasil = ParallelEnumerable.Select(data2, p => p.Length > 2);
foreach (var res in hasil)
{
    Console.WriteLine(res + DateTime.Now.Millisecond.ToString());
}

ternyata hasil di konsol adalah :

image

mmm kalo liat dari hasil di konsol nampaknya proses looping ngak dibagi-bagi deh eksekusinya. tetep dieksekusi secara sequensial, soalnya tulisan milisecondnya bertambah terus dari tiap baris. mmm apakah ini pengaruh dari "Pararelism Blockers" ato gara-gara gua salah coding ya? maklum dah jam 2 pagi.

Okeh karena gak puas dengan LINQ dan masih belum ngantuk gua langsung cobain proses looping dengan API yang ada dari System.Threading (dll baru bawaan dari extension ini) tulis kode dibawah dan langsung eksekusi :

Parallel.For(0, 10, i =>
{
    Console.WriteLine("angka ke-"i.ToString() +" "+ DateTime.Now.Millisecond.ToString());
});

he3x disini mulai keliatan paralelnya kerja, soalnya di konsol tertulis kayak gini :

image

terlihat jelas bahwa urutan eksekusinya gak urut, kan harusnya abis tulisan "angka ke - 2" dilanjutkan dengan "angka ke - 3" tapi karena paralel dan kebetulan yang ke 8 beres duluan maka abis tulisan "angka ke - 2" dilanjutkan dengan tulisan "angka ke -8" lalu yang ke 9 dan setelah itu baru yang ke 3 beres dan dilanjutkan dengan 4,5, dst...

he3x menarik ya? dan sekali lagi ketika loopnya gua jadiin 1000000 kali maka CPU Usage laptop gua langsung jadi 100% (bisa diliat di gambar dibawah)dan kedua prosesornya langsung keliatan full 100%, lain kalo dengan loop biasa paling cuma jadi 50%-60% aja load prosesornya.

image

he3x menarik juga ini API fitur dual core laptop gua jadi bisa dipake maksimum deh, cuma sayang mata gua udah mulai berkunang-kunang , saatnya matiin komputer dan menarik selimut untuk tidur...

cheers

Share this post: | | | |
Posted: Mar 24 2008, 07:06 PM by ronald | with 3 comment(s)
Filed under: , ,

Comments

hakim said:

wuih keren, Ronald tu kayaknya kode program sama output yang di tampilkan untu plinq gak cocok ya ? gak ada string "angka ke -" nya tapi bisa muncul sendiri :p

# March 25, 2008 1:46 PM

ronald said:

hi2x teliti banget lo...

iya kode program ama hasilnya itu beda..

soalnya gua lupa update sourcecodenya :D

# March 25, 2008 4:55 PM

hakimrie said:

hua.., sudah lama gak posting sejak posting pertama. jadi punya utang banyak nih, ditambah denda jadinya

# March 25, 2008 5:14 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 
Are you human?:  


Enter the numbers above: