veya
Bir fark var mı? tüm mql5 derleyici optimizasyonlarını hesaba katarak mı?
Şahsen ben ilkini tercih ederim.
Her ihtimale karşı. Derleyici her seferinde bellek ayırmayacak kadar akıllı olabilir, ancak ilk durumda bunu açıkça belirtiyorum, ancak ikinci durumda bu, dilin mantığına göre, derleyicinin çalışmasının örtük bir sonucudur, çünkü, değişken blok içinde oluşturulmalı ve bloktan çıkarken kaldırılmalıdır.
Eh, int'yi dizgeye dönüştürmeden eşitlemek kötü bir uygulamadır.
Bir fark var mı? tüm mql5 derleyici optimizasyonlarını hesaba katarak mı?
Hiçbir fark olmadığını dinlemeyin. Sadece ilk seçeneği kullanın, bir fark var. Her ne kadar microcl'den disassm çalışmamış olsam da.
Şahsen ben ilkini tercih ederim.
Her ihtimale karşı. Derleyici her seferinde bellek ayırmayacak kadar akıllı olabilir, ancak ilk durumda bunu açıkça belirtiyorum, ancak ikinci durumda bu, dilin mantığına göre, derleyicinin çalışmasının örtük bir sonucudur, çünkü, değişken blok içinde oluşturulmalı ve bloktan çıkarken kaldırılmalıdır.
Eh, int'yi dizgeye dönüştürmeden eşitlemek kötü bir uygulamadır.
George haklı, garanti değil.
Ve 'sayı'dan 'dize' uyarısına örtülü dönüşümü alıyoruz
Ve belirsizlikten ve uyarıdan tam olarak bu şekilde kurtuluruz.
for ( int i = 0 ; i < 1000 ; i++) { static string st = IntegerToString (i); ... }
Şahsen ben ilkini tercih ederim.
Her ihtimale karşı. Derleyici her seferinde bellek ayırmayacak kadar akıllı olabilir, ancak ilk durumda bunu açıkça belirtiyorum, ancak ikinci durumda bu, derleyicinin örtük bir sonucudur.
Benimle dalga mı geçiyorsun? Bu derleyici için o kadar önemsiz bir durum ki burada söylenecek bir şey bile yok. Ve böyle bir paranoya ile, tamamen montajcıda kodlayabilirsiniz) Bu bile şu anda zaten anlamsız hale geliyor. Modern derleyicilerin optimizasyonlarını aşmak için çok denemeniz gerekir.
Dinleme, sana burada söylerler))
// c++ #include <iostream> #include < string > using namespace std; void * operator new (size_t sz) { void *ptr = std::malloc(sz); if (ptr) return ptr; else throw std::bad_alloc{}; } int main() { for ( uint i = 0 ; i < 3 ; ++ i) { string s; char buf[ 10 ]; sprintf(buf, "%u" , i); s = "sfjhidfsrtea111" ; s += buf; cout << s << '\n' ; } }
gcc -O3'ü derliyorum, bir hata ayıklayıcı altında çalıştırıyorum, yeni operatöre bir kesme noktası ayarlıyorum, üç çağrı alıyorum. Klan ile aynı.
Not: dize bir döngü için çıkarılırsa, çağrı birdir.
Benimle dalga mı geçiyorsun? Bu derleyici için o kadar önemsiz bir durum ki burada söylenecek bir şey bile yok. Ve böyle bir paranoya ile, tamamen montajcıda kodlayabilirsiniz) Bu bile şu anda zaten anlamsız hale geliyor. Modern derleyicilerin optimizasyonlarını aşmak için çok denemeniz gerekir.
Numara. Şaka yapmıyorum.
Tabii ki, bu durumda, normal bir derleyici, döngü içindeki bir değişkenin bildirimini çıkarmalıdır.
Ben sadece "derleyici için umut et, ama kendin hata yapma" diye düşünüyorum. Derleyici standardı, bildirim sırasında yerel bir değişkenin oluşturulduğunu ve bildirildiği blok çıktığında silindiğini varsayar. Bu nedenle, bu ilke ilk etapta yönlendirilmeli ve derleyicinin kodunuzu sizin için geliştirmesini beklememelidir.
Burada, verimlilikten bile değil (aslında modern derleyiciler çok yüksek kaliteli kod sağlar), ancak programcının kendisinin "düşünme şeması" hakkında konuşuyoruz. Codebase'in kaynak kodlarına baktığımda, ne kadar küçük ve basit, ancak potansiyel olarak tehlikeli eksiklikler içerdiklerine genellikle şaşırıyorum. Bu durumda - yine de çok kritik değil, olabilecek maksimum değer - program biraz daha yavaş çalışacaktır. Gerçek hatalar çok daha incedir.
Dinleme, sana burada söylerler))
gcc -O3'ü derliyorum, bir hata ayıklayıcı altında çalıştırıyorum, yeni operatöre bir kesme noktası ayarlıyorum, üç çağrı alıyorum. Klan ile aynı.
Not: dize bir döngü için çıkarılırsa, çağrı birdir.
Ve başka türlü yapamazdı, çünkü. kesme noktalarınızla optimizasyona kendiniz müdahale ettiniz. Optimizasyonun özü, algoritmanın mantığını değiştirmemesi gerektiğidir. Bu nedenle, onu açık bir şekilde tespit etmek imkansızdır. Bir kesme noktası varsa, doğal olarak derleyicinin bu kodu kesme hakkı yoktur. Derleyicinin bir kesme noktasının üzerinden atlayabileceğini mi varsaydınız? )
Optimizasyon yalnızca derlenmiş kodla veya performans ölçülerek tespit edilebilir. Bu yüzden yapılacak ilk şey bu. Ve sakin ol)
Ve başka türlü yapamazdı, çünkü. kesme noktalarınızla optimizasyona kendiniz müdahale ettiniz. Optimizasyonun özü, algoritmanın mantığını değiştirmemesi gerektiğidir. Bu nedenle, onu açık bir şekilde tespit etmek imkansızdır. Bir kesme noktası varsa, doğal olarak derleyicinin bu kodu kesme hakkı yoktur. Derleyicinin bir kesme noktasının üzerinden atlayabileceğini varsaydınız mı? )
Optimizasyon yalnızca derlenmiş kodla veya performans ölçülerek tespit edilebilir. Bu yüzden yapılacak ilk şey bu. Ve sakin ol)
Kahretsin, bu sadece vahşi yoğunluk, yorumlanacak ne var, hata ayıklayıcının tamamen yanlış anlaşılması.
Hız hakkında - bellek yöneticisi o kadar aptal değil ve işletim sistemine soracağı bir gerçek değil, önceden tahsis edilmiş olanı yeniden kullanabilir. Genel olarak istediğiniz gibi kullanın, size kalmış. Ancak başkalarını buna ikna etmemelisiniz, en azından betonarme kanıtlar sağlanana kadar, neredeler?
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
veya
Bir fark var mı? tüm mql5 derleyici optimizasyonlarını hesaba katarak mı?