".. modern CPU'lar ucuzdur ve% 100 CPU'da hızlı bir şekilde bozulur".
"CPU bozulması" konusunda endişelenmenize gerek yok. Modern CPU'lar önceki zamanlardan daha az kalitede değil.
Öyle çok pahalı (ve birkaç yılda bir daha pahalı oluyor) Yeni bir fab (bağlantıya bakınız) nadir değildir oluşturmak için, bazı milyarlarca işlemcileri yapmak.
http://en.wikipedia.org/wiki/Semiconductor_fabrication_plant
Bir işlemcinin üretim maliyetleri en fazla no. üretildi. Bu ekonomide iyi bilinen bir gerçektir. Her şeyden önce (nispeten) “ucuz” olarak satılmalarının nedeni budur. (Bence burada bağlantı gerekli değil)
Modern CPU'ların "eski zamanlardan" daha kaliteli olma eğiliminde olduğunu düşünmemin birkaç nedenini listeleyebilirim.
Ancak sadece en önemlisi: Testteki avantajlar. Modern elektronikler "test için tasarlanmıştır". Yazılım veya donanım olsun, hemen hemen her şey üzerinde testler yapmanın geniş bir anlayışı çok eski değildir. CPU'lar için farklı fiyat ve sıklık türlerini oluşturmak için testler bile yapılır, örneğin en iyi CPU'lar en yüksek frekanslarla satılır. Buna rağmen, daha ucuz işlemciler satıldığından çok daha sık çalışabiliyorlar - yalnızca üreticinin bazı "yüksek seviye" işlemcileri daha yüksek fiyatlarla satmak istemesi nedeniyle sakat kalıyorlar.
(Diğer yandan, bugünlerde normalde 1.5 milyardan fazla transistöre sahip bir işlemcide yetmişlerin bir işlemcisinin bin transistörüne kıyasla daha fazla hata var. En azından mikro kodda bilinen birçok hataya sahip olma eğilimindedir , ancak bu konuya tabi değildir.)
Programınızın CPU bozulması konusunda endişelenmemek için daha da fazla neden var:
Bunun ilk nedeni, modern CPU'ların çok ısınmaları durumunda frekanslarını veya kısmalarını düşürmeleridir.
İşlemcinin% 100 / 7'sini% 100/7 kullanırsanız, normalde sadece bir saatte bir her ikinci haftada bir kullanılan CPU'dan daha erken öleceği açıktır. Ancak bu, arabalar için de geçerlidir. Sadece böyle durumlarda CPU kullanımı hakkında düşünürdüm ve potansiyel kendini uyur.
İkinci sebep, işletim sisteminin CPU’nun% 100’ünü (örneğin Windows’ta) kullanan bir program yazmanın çok zor olmasıdır. Ayrıca, modern işlemciler (normalde) en az 2-4 çekirdeğe sahiptir. Dolayısıyla, tek çekirdekli bir işlemcinin% 100'ünü kullanma eğiliminde olan geleneksel bir algoritma, şimdi çift çekirdekli işlemcide (% 100 basitleştirilmiş ancak gerçek senaryolarda görülüyor) sadece% 50'ye sahip.
Dahası, işletim sistemi CPU'nuzu kontrol eder ve programınız üzerinde değil, bu nedenle aynı veya daha yüksek önceliğe sahip başka uygulamalar varsa (varsayılan değer), programınız yalnızca mümkün olduğunca fazla CPU alıyor, ancak diğer uygulamalar açlıktan. (Tabii ki bu sadece basitleştirilmiş bir teoridir ve elbette Windows, Linux ve diğerlerinin çoklu görevi mükemmel değildir, ama genel olarak bunu doğru olarak düşünürdüm).
"Daha önce yoğun veya uzun bir işlem için% 100 CPU kullanımının tercih edildiği izlenimi altındaydım."
Evet, bununla kal. Ancak, örneğin, başka bir işlem için bekleyen ve döngü yaparsanız, başka bir deyişle, hiçbir şey yapmazsanız, Thread.Sleep () bu döngüdeki milisaniyelerin bir kısmını başkalarına ekstra zaman vererek verirseniz çok da kötü olmaz. Çok görevli bir işletim sistemi için gerekli olmasa da, bununla ilgili bazı sorunları çözdüm, örneğin Windows 2000 için. (Tabii ki hesaplamalarda Sleep () kullanımı elbette bu DEĞİLDİR).