OOP ile ilgili yardım - sayfa 7

 
fxsaber # :

Yanlış karşılaştırma çünkü nesnelerin otomatik olarak silinme süresi dikkate alınmaz.

Değiştirildi.

V3'ten sonra 123 megabayt nereden geliyor - bilmiyorum.

Hayır, doğru. Ve bu temel bir nokta. Zaman maliyetinin son derece pahalı olduğu ana iş parçacığında otomatik silme gerçekleşmez. Paralel iş parçacığının kullanılan belleği geri almasını beklemeden yeni bir çalıştırma başlatabilirsiniz. Evet, aynı zamanda çağrılacak ve ayrıca CPU kaynakları gerektirecektir, ancak bu arka planda gerçekleştirilen bir yan işlem olacaktır. Herhangi bir, en agresif optimizasyonda bile, CPU kaynaklarının bir kısmı diğer iş parçacıkları için kullanılabilir olacaktır, çünkü artık tüm modern işletim sistemleri bu şekilde çalışmaktadır. Modern işlemcilerde CPU kullanım okunu %100 olarak ayarlamak artık neredeyse imkansız.

--

Farklı yazacağım. Diyelim ki 5 birim zaman alan bir görev var. İster tek iş parçacığında 5 adet, isterseniz 2 adet 3 ve 2 adet olarak gerçekleştirebilirsiniz. Açıkçası, toplam yürütme süresi aynı olacaktır: 5 birim, ancak ikinci durumda 2 birim daha az fiziksel zaman gerekli olacaktır, çünkü ikinci durumda, görev paralelleştirilir, ancak ilkinde değil. Optimizasyonun zaten mevcut tüm fiziksel CPU çekirdeklerini aldığına dair bir karşı argüman var. Ama bu doğru değil. Herhangi bir optimizasyon, en iyi ihtimalle, işletim sistemi çekirdeği sayısına eşit sayıda iş parçacığı tahsis edecektir. Bununla birlikte, işletim sisteminde, bu görevlere ek olarak, yüzlerce kişi daha yürütülecek ve 8 işlemci çekirdeğinin tümü (sekiz varsa) optimize edici tarafından tahsis edilen 8 iş parçacığı değil, yüzlerce sistem iş parçacığı arasında bölünecektir. Bu nedenle, 8+1 veya 8+8 modunda bir iş parçacığı daha tahsis etmek, uygulama 8 iş parçacığı tahsis ettiği için tüm CPU kaynaklarını %100 kullanacağını safça düşünmekten her zaman daha uygundur.

--

Genel olarak, “ Bu zamanı saymıyoruz, çünkü tüm sistemin toplam süresi onu içeriyor gibi argümanları dinlemek güzel. eğer öyleyse, muhtemelen bu sefer kıyaslamayı iskonto etmeliyiz, çünkü yöntemlerin bir şekilde daha yavaş ve diğerinde daha hızlı olarak adlandırılması adil değil))))) Peki, bu durumda, neden performans için boğuluyormuş gibi davranalım? 90'lardan geldiğimizi ve "montajcı zaten daha hızlı!" gibi yanlış sloganlardan başka bir şey olmadığını kabul edelim. veya "işaretçilerle çalıştığımda - her şeyi kontrol ediyorum" tanımını yapmayız.

--

İkinci an. V2'ye dikkat edin. Nesnelerin silinmesi yoktur ve bilinçli olarak doğrudan bellek sızıntısına izin verilir. Bu durumda bile nesnelerin seçimi 1,4 saniye sürer. V1'de 1.2'ye karşı, ancak silme için hiçbir zaman boşa harcanmaz.

fxsaber # :

V3'ten sonra 123 megabayt nereden geliyor - bilmiyorum.

Söylemesi zor. mql sanal makine özelliklerini bilmeniz gerekir. Ve geliştiriciler dışında kimse bunu bilmiyor. ProcessHacker'daki analize göre, *new aracılığıyla tahsis edilen nesnelerin bir şekilde birer birer kurnazca bir yere tahsis edildiği, daha sonra zaten büyük diziler olarak başka bir hafıza alanına taşındığı izlenimi edinilir. Onlar. bazı geçici nesneler veya başka bir şey olabilir.

 
Vasiliy Sokolov # :

Hayır, doğru. Ve bu temel noktadır. Zaman maliyetinin son derece pahalı olduğu ana iş parçacığında otomatik silme gerçekleşmez. Paralel iş parçacığının kullanılan belleği geri almasını beklemeden yeni bir çalıştırma başlatabilirsiniz. Evet, aynı zamanda çağrılacak ve ayrıca CPU kaynakları gerektirecektir, ancak bu arka planda gerçekleştirilen bir yan işlem olacaktır. Herhangi bir, en agresif optimizasyonda bile, CPU kaynaklarının bir kısmı diğer iş parçacıkları için kullanılabilir olacaktır, çünkü artık tüm modern işletim sistemleri bu şekilde çalışmaktadır. Modern işlemcilerde CPU kullanım okunu %100 olarak ayarlamak artık neredeyse imkansız.

--

Farklı yazacağım. Diyelim ki 5 birim zaman alan bir görev var. İster tek iş parçacığında 5 adet, isterseniz 2 adet 3 ve 2 adet olarak gerçekleştirebilirsiniz. Açıkçası, toplam yürütme süresi aynı olacaktır: 5 birim, ancak ikinci durumda 2 birim daha az fiziksel zaman gerekli olacaktır, çünkü ikinci durumda, görev paralelleştirilir, ancak ilkinde değil. Optimizasyonun zaten mevcut tüm fiziksel CPU çekirdeklerini aldığına dair bir karşı argüman var. Ama bu doğru değil. Herhangi bir optimizasyon, en iyi ihtimalle, işletim sistemi çekirdeği sayısına eşit sayıda iş parçacığı tahsis edecektir. Bununla birlikte, işletim sisteminde, bu görevlere ek olarak, yüzlerce kişi daha yürütülecek ve 8 işlemci çekirdeğinin tümü (sekiz varsa) optimize edici tarafından tahsis edilen 8 iş parçacığı değil, yüzlerce sistem iş parçacığı arasında bölünecektir. Bu nedenle, 8+1 veya 8+8 modunda bir iş parçacığı daha tahsis etmek, uygulama 8 iş parçacığı tahsis ettiği için tüm CPU kaynaklarını %100 kullanacağını safça düşünmekten her zaman daha uygundur.

--

Genel olarak, “ Bu zamanı saymıyoruz, çünkü tüm sistemin toplam süresi onu içeriyor gibi argümanları dinlemek güzel. eğer öyleyse, muhtemelen bu sefer kıyaslamayı iskonto etmeliyiz, çünkü yöntemlerin bir şekilde daha yavaş ve diğerinde daha hızlı olarak adlandırılması adil değil))))) Peki, bu durumda, neden performans için boğuluyormuş gibi davranalım? 90'lardan geldiğimizi ve "montajcı zaten daha hızlı!" gibi yanlış sloganlardan başka bir şey olmadığını kabul edelim. veya "işaretçilerle çalıştığımda - her şeyi kontrol ediyorum" tanımını yapmayız.

--

İkinci an. V2'ye dikkat edin. Nesnelerin silinmesi yoktur ve bilinçli olarak doğrudan bellek sızıntısına izin verilir. Bu durumda bile nesnelerin seçimi 1,4 saniye sürer. V1'de 1.2'ye karşı, ancak silme için hiçbir zaman boşa harcanmaz.

Söylemesi zor. mql sanal makine özelliklerini bilmeniz gerekir. Ve geliştiriciler dışında kimse bunu bilmiyor. ProcessHacker'daki analize göre, *new aracılığıyla tahsis edilen nesnelerin bir şekilde birer birer kurnazca bir yere tahsis edildiği, daha sonra zaten büyük diziler olarak başka bir hafıza alanına taşındığı izlenimi edinilir. Onlar. bazı geçici nesneler veya başka bir şey olabilir.


Peki, ana iş parçacığında silme işlemi gerçekleştirilmezse, o zaman boyuta dahil olup olmaması ne fark eder? Etkilemez)))) Öyleyse, neden gerçeği görmek için açmıyorsunuz?

Ve bu arada, bu arada Vasily, orada seni bekleyen bir soru var (son satır).

 
Vasiliy Sokolov # :

... Veya " new ile oluşturulan nesnelerin yöntemleri daha yavaş çağrılır " argümanı ...

ölçecek kadar yok mu? Sen boş bir şalabolkasın, Vasya, bir çıngırak.

 
Dmitry Fedoseev # :

ölçecek kadar yok mu?

Evet, sonunda uyuya kaldın!

 
Vasiliy Sokolov # :

Evet, sonunda uyuyabilirsin!

Hayal et... ve ayaklarını yere vur

 
Dmitry Fedoseev # :

Peki, ana iş parçacığında silme işlemi gerçekleştirilmezse, o zaman boyuta dahil olup olmaması ne fark eder? Etkilemez)))) Öyleyse, neden gerçeği görmek için açmıyorsunuz?

Öyleyse, optimizasyon sırasında çalışan Explorer, telgraf, Chrome tarafından harcanan toplam süreyi kıyaslamaya dahil edin. Hepsini öldürüp sadece MT bıraksanız bile, CPU zamanını boşa harcayacak başka yüz sistem iş parçacığı olacak, onları açın.

 
Vasiliy Sokolov # :

Öyleyse, optimizasyon sırasında çalışan Explorer, telgraf, Chrome tarafından harcanan toplam süreyi kıyaslamaya dahil edin. Hepsini öldürüp sadece MT bıraksanız bile, CPU zamanını boşa harcayacak başka yüz sistem iş parçacığı olacak, onları açın.

Paralel bir akışta))) (© Vasya)

 

Vasya, gerçekten aptalsın!

Ama devam edin, ısrar edin.

 
Dmitry Fedoseev # :

Ve bu arada, bu arada Vasily, orada seni bekleyen bir soru var (son satır).

Boş ve sıfır kodlayıcı olduğunuzu iki kez kanıtlayabilirsiniz. Ama buna kimin ihtiyacı var ve neden, bunu bir seneden beri ispatlarsanız, zasera tam anlamıyla bu forumun her dalında. İki yıl boyunca buraya hiçbir şey yazmadım, sadece ara sıra baktım - ve her zaman, herhangi bir başlıkta, “burada hepiniz moronsunuz, anlamıyorsunuz” tarzında “yetkili görüşünüz” ile siz vardınız. hiçbir şey, ama sana nasıl yapacağını söylemeyeceğim.” Sen çürük bir adamsın Dima.

 
Vasiliy Sokolov # :

Boş ve sıfır kodlayıcı olduğunuzu iki kez kanıtlayabilirsiniz. Ama buna kimin ihtiyacı var ve neden, bunu bir seneden beri ispatlarsanız, zasera tam anlamıyla bu forumun her dalında. İki yıl boyunca buraya hiçbir şey yazmadım, sadece ara sıra baktım - ve her zaman, herhangi bir başlıkta, “burada hepiniz moronsunuz, anlamıyorsunuz” tarzında “yetkili görüşünüz” ile siz vardınız. hiçbir şey, ama sana nasıl yapacağını söylemeyeceğim.” Sen çürük bir adamsın Dima.

Ne? Sorun şu ki, sana doğru yolu söylemiyor muyum?

Evet ve burada zaten çok havalı bir şey kanıtladınız))

Ve ben çürük müyüm? Kod yazdığımda ishal ve skrofula aldığınız yer burasıdır.