top of page

Paralel Programlama Uygulamasi [C#]

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Feb 21, 2013
  • 2 min read

Arastirmalarim sonucunda Visual Studio'da paralel programlama hakkinda kucuk bir uygulama ortaya cikarmak istedim. Bunun icin visual studio'da System.Diagnostics ve System.Threading.Tasks dll'leri ile calismam gerekiyor. Uygulamamiza gececek olursak oncelikle visual studio'da console application olusturuyoruz. Ardindan, olusturmus oldugumuz projenin cs kismina using System.Diagnostics; ve using System.Threading.Tasks; komutlarini namespace'imize ekliyoruz. Uygulamamizda matematiksel bir formulun hem seri islemde hemde paralel islemde gorevler halinde islemcimize gonderiyoruz ve sonuclarini thread'ler uzerinde toplam surelerine gore gormus olucaz. System.Threading.Thread.CurrentThread.ManagedThreadId komudu ile gondermis oldugum gorevin thread'in hangi id'sinde islem gordugune dair geri bir bilgi almis oluyoruz. time.ElapsedMilliseconds komutu ile yapmis oldugumuz islemlerin miliseccond turunden toplam suresini almis oluyoruz. Parallel.For ile seri islemimizde yapmis oldugumuz for dongusundeki islemleri paralel isleme cevirerek sonucunu vermis olacaktir.

Program.Cs Kaynak Kodlari;

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading.Tasks; namespace ParallelProgrammingApp03 { class Program { static void Main(string[] args) { SeriIslemler(); ParalelIslemler(); Console.ReadKey(); } static void SeriIslemler() { Console.WriteLine("Seri Islemler"); Stopwatch time = new Stopwatch(); time.Start(); for (int i = 1; i <= 10; i++) { var islemSonuclari = Islem(i); Console.WriteLine("Deger {0} Sonucu : {1} Thread : {2}", i, islemSonuclari, System.Threading.Thread.CurrentThread.ManagedThreadId); } Console.WriteLine("Toplam Sure : {0} milisecond", time.ElapsedMilliseconds); Console.WriteLine(); } static void ParalelIslemler() { Console.WriteLine("Paralel Islemler"); Stopwatch time = new Stopwatch(); time.Start(); Parallel.For(1, 11, i => { var islemSonuclari = Islem(i); Console.WriteLine("Deger {0} Sonucu : {1}, Thread : {2}", i, islemSonuclari, System.Threading.Thread.CurrentThread.ManagedThreadId); }); Console.WriteLine("Toplam Sure : {0} milisecond", time.ElapsedMilliseconds); Console.WriteLine(); } static double Islem(int Deger) { double Sonuc = 0; for (int i = 0; i < 10000; i++) { Sonuc += (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(0.201 * Math.Pow(Deger, 2) * Math.Exp(Math.Sqrt(Deger))); } return Sonuc; } } }

Uygulamanin Ekran Goruntusu;

                        Gelen sonuclarin hangi thread'den geldiklerine dikkat ediniz. Seri islemlerde sadece 9.thread kullanilirken paralel islemlerde 9,6 ve 10.thread'ler kullanilmis sonuclari kendi aralarinda paylasmislardir. Keyifli Calismalar Dilerim..

Recent Posts

See All
Oracle Java Cloud Service Uygulamasi

Bir onceki Oracle Cloud Computing yazisinda bahsettigim gibi JDeveloper Oracle Cloud icin gelistirmis oldugu surumu olan Oracle JDeveloper 11g (11.1.1.6.0) ile kucuk bir uygulama gelistirip bunu oracl

 
 
 
Oracle Cloud Computing Hakkinda

Bulut bilisim konusundaki arastirmalarima devam ederken bu kez solugu Oracle Cloud Computing'de aldim. Bu makalem ve ilerleyen makalelerimde Trial versiyonu ile user tarafini pek yormayan bir yapidan

 
 
 
Loop Optimization - Loop Optimizasyonu

Var olan dongulerin acilmis yada sikistirilmis hallerini optimize ettikten sonra cache'imizde nasil bir performans saglayacigini gorebiliriz. Bunun icin uc adet dogu optimizasyon yontemi bulunmaktadir

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page