Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BM-308 Paralel Programlamaya Giriş Bahar 2015 (2. Sunu) (Yrd. Doç. Dr. Deniz Dal)

Benzer bir sunumlar


... konulu sunumlar: "BM-308 Paralel Programlamaya Giriş Bahar 2015 (2. Sunu) (Yrd. Doç. Dr. Deniz Dal)"— Sunum transkripti:

1 BM-308 Paralel Programlamaya Giriş Bahar 2015 (2. Sunu) (Yrd. Doç. Dr. Deniz Dal)

2 YAZDIĞIMIZ C++ PROGRAMLARININ PERFORMANSININ ÖLÇÜLMESİ Yazdığımız ve executable haline dönüştürdüğümüz C++ programlarımızın CPU tarafından ne kadar sürede işletildiğini bizim için hesaplayan time adında bir Linux komutu vardır. time komutuna argüman olarak çalıştıracağımız executable dosyanın adını ve varsa eğer dosyanın komut satırı parametrelerini vermeliyiz. Örnek: $man time Örnek: $time./a.out Örnek: $time./cikti.x Örnek: $time./cikti.x 100 Örnek: $time./cikti.x -n 100 ÖRNEK ÇIKTI real0m2.398s user0m2.376s sys0m0.018s

3 time KOMUTU ÇIKTISI realProgramın çalıştırılmaya başlandığı an ile çalışmasının bittiği an arasında geçen reel süredir. (Wall Clock Time) (Executable dosyanızın harddiskten belleğe getirilmesi de süre alır.) userCPU’nun kullanıcının işini gerçekleştirmek üzere harcadığı zaman. (CPU Time) sysSistem tarafından kullanılan toplam CPU süresi. (İşletim sisteminin sizin programınızı işletirken harcadığı CPU zamanı. Örneğin I/O işlemlerinin gerçekleştirilmesi.)

4 C++ Programlarında Zaman Ölçümü (Windows) #include //clock_t, clock() ve CLOCKS_PER_SECOND #include //cout using namespace std; int main(int argc, char* argv[ ]) { clock_t baslangicZamani, bitisZamani; double gecenZaman; baslangicZamani=clock(); ////Süresini Ölçmek İstediğiniz Program Burada//// bitisZamani=clock(); gecenZaman=((double)bitisZamani -(double)baslangicZamani)/CLOCKS_PER_SEC; cout<< "Total Time Taken (saniye cinsinden): " <

5 C++ Programlarında Zaman Ölçümü (Linux) #include //struct timeval, gettimeofday #include //cout using namespace std; int main(int argc, char* argv[ ]) { struct timeval currentTime; double startTime,endTime,elapsedTime; // Get the current time. 2nd argument NULL because we don't care about time zone gettimeofday(¤tTime, NULL); //Seconds from the epoch time startTime=currentTime.tv_sec+(currentTime.tv_usec/ ); ////Süresini Ölçmek İstediğiniz Program Burada//// // Get the current time gettimeofday(¤tTime, NULL); //Seconds from the epoch time endTime=currentTime.tv_sec+(currentTime.tv_usec/ ); // Calculate the elapsed time in seconds elapsedTime = endTime-startTime; cout << "Total Time Taken (saniye cinsinden): " << elapsedTime<< endl; return 0; }

6 Tek Boyutlu Bir Dizinin Dinamik Olarak Oluşturulması (Allocation) ve Yok Edilmesi (Deallocation) //Allocation int *diziPtr=new int[diziBoyutu]; //Deallocation delete [ ] diziPtr;

7 Tek Boyutlu Dinamik Bir Dizinin Elemanlarına Değer Atanması for(int i=0;i

8 Matrislerin Dinamik Olarak İki Boyutlu Oluşturulması //First Dimension (Rows) int **matrixPtr=new int*[rowSizeOfMatrix]; //Second Dimension (Columns) for(int i=0;i

9 Dinamik Olarak ve İki Boyutlu Oluşturulmuş Bir Matrisin Elemanlarına Değer Atanması for(int i=0;i

10 Dinamik Olarak Oluşturulmuş İki Boyutlu Matrislerin Yok Edilmesi //Deallocate Columns for(int i=0;i

11 int *matrixPtr=new int[rowSizeOfMatrix*columnSizeOfMatrix]; int matrixIJ; for(int i=0;i

12 UYGULAMA Kullanıcıdan komut satırı üzerinden 2 argüman alacak bir C++ programı yazınız. Kullanıcıdan alınan 1. argüman bir tam sayıdır. Bu tam sayı dinamik olarak oluşturulacak ve içinde integer değerler saklayacak olan tek boyutlu bir dizinin eleman sayısıdır. Kullanıcıdan alınan 2. argüman dizinin içerisine atanacak olan rastgele tam sayıların üst limitidir. Yazacağınız C++ programı söz konusu dizinin içini rastgele tam sayılarla doldurduktan sonra dizinin en büyük elemanını bularak ekrana yazdırmalıdır. Komut satırının 1. argümanı olarak 10 veya daha küçük bir sayı girilmişse eğer dizinin elemanları da ekrana bastırılmalıdır. Programınızı komut satırından derleyiniz ve çalıştırınız. Çalışma zamanını tespit ediniz.

13 HATIRLATMA C++ ta rastgele sayı üretmek için kullanılan rand ve srand fonksiyonları kütüphanesi içinde tanımlıdır. srand fonksiyonuna zamanı çekirdek (seed) olarak verebilmek için time fonksiyonu 0 parametresi ile (time(0)) kullanılmalıdır. Bu fonksiyon kütüphanesi içinde tanımlıdır.


"BM-308 Paralel Programlamaya Giriş Bahar 2015 (2. Sunu) (Yrd. Doç. Dr. Deniz Dal)" indir ppt

Benzer bir sunumlar


Google Reklamları