Gcc derleme süresi hesaplama

Başlatan metekhann, 27 Ocak 2016 - 00:00:18

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

metekhann

BEYLER ACİL YARDIMINIZ GEREKİYO

EKDE VERDİĞİM RESİMDEKİ SORUYU BULMAK İÇİ HAFTADIR UĞRAŞIYOM HİÇBİR YERDE CEVABI YOK
YARDIM EDERSENİZ SEVİNİRİM KAFAYI YİCEM YOKSA

[eklenti yönetici tarafından silindi]

heartsmagic

Merhaba.

Öncelikle büyük harfle yazmazsan, başlıklarında da "acil yardım" gibi ifadeleri kullanmazsan seviniriz :)

Bu bir sınav sorusu olduğu için esasında doğrudan cevap vermeye pek istekli olmayız forumda. Bu konuları hiç mi anlatmadı hocanız? Hiç mi değinmedi? Araştırman gereken şey time uygulamasının kendisi. Eğer İngilizce sorun değilse ufak bir araştırmayla cevabı öğrenebilirsin. İngilizce sıkıntılıysa bizlere bildiklerini anlat, eksiklerini tamamlamaya çalışalım.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

metekhann

Hoca bu konuda hiç bilgi vermedi amacı çaba göstermemiz galiba
araştırma yaptım gcc derleme programının sonuçlarıymış bunlar bi çok sayfada anlatımı var ama ingilizce sıkıntı olduğu için tabiki cevabını bulamadım
user kullanıcaya ulaşma zamanı olarak anladım sys heryerde olduğu gibi system çalışma zamanı reali zaten anlamadım ama gerçek zaman gibi bişeyler yazıyo yabancı sitelerde.
Zaten sorunun cevabını istemedim yardım istedim


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 27 Ocak 2016 - 00:31:17

Tablodaki verilerin anlamı nedir onu bilmem yeterlidir heralde googleda bile türkçe bişey bulunmayan bi konudan sorumluyuz derste anlatması zaten imkansız bunu
bazı cevaplar buldum en kısa sürede gerçekleştiren test baz alınmalı bence ama hala net açıklayamam

heartsmagic

Programın tamamlanma süresinin ne olduğunu kestiremiyorum açıkçası. Yazılan uygulamanın "derlenme" süresi ise tablodaki veriler derlenme zamanlarıdır. Yok, geliştirilen uygulamanın tamamlanması dediği, açılma zamanı ise ona göre değişir cevap.

Yanlış bilmiyorsam:

- sys dediği sistem çağrıları, çekirdek seviyesindeki geçen zaman.
- user dediği kullanıcı-kipi seviyesinde geçen zaman.

Bu ikisi CPU bazlı zamandır.

- real ise her şeyi kapsıyor. Uygulamanın kendisi ve dış etmenler. Örneğin disk üzerindeki bekleme vs.

Tabloda dört farklı deneme görülmekte. Sürelerden hangisinin esas alınacağı benim için şu an bir muamma. Dediğim gibi soruyu tam olarak anlayamadığım için yanıltıcı cevap vermek istemem.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

metekhann

Tamamlanma süresi programın gönderilip çalışıp dönüş zamanı olmalı yani çalıştırma zamanı
4 test var bu testlerde zamanlar gittikçe kısa sürede gerçekleşiyor bu neden olabilir yani neye göre azalırki çalıştırma zamanı

Benim dediğim gibi çalıştırma süresi en kısa olan alınmalı bence bi arkdaşımda bulduğum cevaba gre tabloyu inceleyip
Çalıştırılan versiyonun alfa olabilmesi için son test değerleri yeterlidir ama betaya yükseltim için tüm değerler incelenmeli ve ortak bir karar verilmeli

Aslında en optimize değeri son testte vermiş mantıklı olarak en optimize test sonucu ele alınmalı diye düşünüyorum tabi düşünmek yeterlimidir bilemedim.
Konuyu tam olarak anlamak istiyorum mantığını

heartsmagic

Alıntı yapılan: metekhannTamamlanma süresi programın gönderilip çalışıp dönüş zamanı olmalı yani çalıştırma zamanı

Bu durumda mesele başlıktaki gibi gcc ile alakalı değil :)

Alıntı Yap
4 test var bu testlerde zamanlar gittikçe kısa sürede gerçekleşiyor bu neden olabilir yani neye göre azalırki çalıştırma zamanı

İşte bu gcc, daha doğrusu derlenme, daha doğrusu kodlama ile alakalı olabilir. Son testteki sürümde daha "optimize" bir kod öbeği vardır ve bu nedenle daha hızlı tepki veriyordur uygulama?
Ya da çevresel değişkenlere göre bu süreler değişiyordur. Mesele bir sınav sorusu olduğu için işin teorik (esasında pratik yönü de böyledir) size nasıl anlatılmışsa o şekilde cevaplamalısınız diye düşünüyorum.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

plazma

#6
Bizim işlemci testi konumuzun uygulamaya uyarlanmış hali benim tablodan ilk bakınca anladığım bu, biraz düzenleme ile olabilir gibi geliyor

https://forum.ubuntu-tr.net/index.php?topic=42083.25


Şöyle bir şey buldum : http://www.phoronix.com/scan.php?page=article&item=clang-37-gcc52&num=1

https://gcc.gnu.org/benchmarks/

WhiteScars

Yukarıda paylaşılan döküman time komutu ile çalıştırılan bir işlemin (process) sistem (system), kullanıcı (user), gerçek (real) zamanlarını gösteren bir çıktıdır.
Önce bir soruyu anlamak lazım.

Soruda derleme ile alakalı bir şey yok. Bir program geliştirilirken test etme sürecinde hangi zaman referans alınmalıdır diye sorulmuş.

Bunu normal bir komut içinde yapabilirsiniz.


time ls -lrt
...

real 0m0.010s
user 0m0.001s
sys 0m0.003s


gibi.

Buradaki değerler kabaca;

sys - Sistem çağrılarının zamanları. Örneğin malloc (memory allocation), fopen (dosyaya erişim için kullanılan fonksiyon), fwrite vs vs sistem çağrıları normal kullanıcı kipi (heartsmagic'ten çaldım inglizcesi user-space)'nde direk olarak erişemeyeceğiniz fonksiyonlar olup, siz bu çağrıları yaptığınızda, çağrıya karşılık gelen çekirdek (kernel) fonksiyonları çalıştırılır. Bu arada geçen süre sys'dir.

user - uygulamanın kullanıcı kipinde harcadığı toplam süredir. Sistem çağrıları hariç.

real - uygulamanın harcadığı toplam gerçek süredir.   

sys ve user süreleri hesaplanırken yanlış hatırlamıyorsam CPU clock kullanılıyor. Fakat real hesaplanırken bizim bildiğimiz normal süre hesaplanıyor. EPOC ile sanırsam bunu hesaplıyor. time uygulamasının koduna bakmak lazım.

teoride real = sys + user olması beklenir fakat, çok çekirdekli sistemler, diske erişimin önbellek'le yapılması, anakart üzerinde çeşitli taklalar atarak donanıma erişimin bir veya birden fazla kanalla yapılması vs. gibi gibi sebeplerden bu dediğim sadece teoride kalır.

Gelelim sorunun cevabına;
Kişisel görüşüm

Bir programda yazılan kodun performans'ını ölçmek ise amaç "user" refereans alınmalı.
Fakat programın bir görevi bitirmesini ölçmek ise amaç "real" referans alınmalı.

Kısacası soru yanlış. Ya da 2 cevabı var. Aslında ucu açık bir soru. Nereden bakıp nasıl yorum yaptığınız ile alakalı. Yukarıdakilerin ikiside doğru cevap sayılması gerekir.

İnsanoğluna bırakabileceğiniz en güzel miras tecrübelerinizdir.