Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Ve ne zamandan beri tüm diziler ve tüm indeksler ve boyutlar da statik hale geldi?
Diziler neredeyse her zaman dinamik olduğundan, dizinler değişken olduğundan, çağrı sırasında ciddi statik kontroller yapılamaz. Geriye yalnızca meta bilgi / rtti'ye dayalı kontroller yapmak kalıyor ve bu nedenle tüm nesneye / açıklamaya erişim sahibi olmak ve bir bellek parçasıyla rastgele çalışmamak çok önemlidir.
Teksas. Sırayla gidelim. Statik diziler için derleme sırasında her şey kolayca kontrol edilir, değil mi?
Dinamik olanlar için (ki bunlar gizli nesnelerdir!), çalışma zamanında meta-bilgi var, değil mi? Orada! Kesinlikle var.
Geriye yalnızca, derlenen işlevin yürütülebilir kodunda denetimin çalışma zamanını kaydetmek kalır. Ve bu kadar!
Ve bunun bir serseri olduğunu söylemiyorum. Eh, Slava (Stringo) da bir piç değil. Ve genel olarak, şimdi kim kolay? .. :)
// Sonunda: dördünde her şey bitti.
// Zaten dinamik diziler yaptıysanız, her yerde yanlarında taşıdıkları meta bilgileri kullanın!
// Buna sahip olarak, genellikle harika şeyler yapabilirsiniz (kullanıcının bilinmeyen boyutlarda dizileri transfer etmesine izin vermek gibi).
// mql5(!) içinde, her iki boyutu da bilinmeyen iki boyutlu bir diziyi bir fonksiyona bile geçiremezsiniz.
// Antika bir kurbağada bile yapabilirsin.. :))
Endişelenme, her şey uzun zamandır düşünüldü.
Koruma ilkelerini ihlal etmenin sonuçlarının çok iyi farkındayız - "Nisan ayında 12 kritik hata daha düzeltilerek sanal makineden çıkmanıza ve sistem üzerinde kontrol sahibi olmanıza olanak tanıyan" yol budur.
1. Bu yüzden bir adlandırma ve bu nedenle zor bir yazım eklemeyi önerdim. Ayrıca, bu, nominal tiplemenin kapsamadığı tek yerdir, bu nedenle dil varlıklarının evrenselleştirilmesi ideolojisine iyi uyum sağlar.
2. Ben de aynısını yapıyorum. Hepsi aynı: birincisi, çarpık, ikincisi, asla evrensel değil. Yapıları gereksiz yere yeniden yazmadan ve sarmadan iki boyutlu bir mql dizisini OpenCL arabelleğine kopyalamanın bir yolu ( 1 ). Veya ( 2 ) tek boyutlu olmayan diziler için (hız amacıyla) kendi ArrayCopy(..) işlevinizi kullanarak.
// Önceki gönderinin sertliği için özür dilerim. Gerçekten gereksiz. "Hadi karmaşıklaştırmayalım" konusunda heyecanlı. Çünkü bu sadece zorluklara yol açar.
2a. Çoğu durumda, ArrayCopy() gibi işlevler için "tek boyutlu kısıtlamanızın", yorumlardaki tek bir temel sorumluluk reddi ile ağrısız bir şekilde gevşetilebileceğini düşünüyorum: "İşlev ayrıca , tüm çok boyutlu dizinin kopyalanması koşuluyla çok boyutlu dizilerle de çalışır."
Birçok sorun ortadan kalkacaktı. // Ama elbette hepsi değil.
İki yol vardır, biri tek boyutlu dizileri ayrı ayrı kopyalamaktır, ancak bu iyi değil, çünkü OCL arayüzü dizilerle dolu olacak,
ve tek boyutlu bir diziyi iki boyutlu olarak göstermenin ikinci yolu, çünkü hala OCL'de bir bant ile iletilmektedir. Sonra böyle bir şey. Bu arada, boyutu değiştirirken veri hareketleri, dizinin bir kısmını kopyalayarak OCL'de yapılabilir, hepsi boyuta, ne kadar uygun maliyetli olduğuna bağlıdır.
İki yol vardır, biri tek boyutlu dizileri ayrı ayrı kopyalamaktır, ancak bu iyi değil, çünkü OCL arayüzü dizilerle dolu olacak,
ve tek boyutlu bir diziyi iki boyutlu olarak göstermenin ikinci yolu, çünkü hala OCL'de bir bantla iletilmektedir. Sonra böyle bir şey. Bu arada, boyutu değiştirirken veri hareketleri, dizinin bir kısmını kopyalayarak OCL'de yapılabilir, hepsi boyuta, ne kadar uygun maliyetli olduğuna bağlıdır.
Doymak için yediğim tek şey bu. :) Ockham isterik..
;)
Burada iki boyutlu bir dizim var. Sizeof(My2DArray) var. Peki, arabelleğe kopyalamak için başka neye ihtiyacınız var ??? Her neyse, hiç kimse dizimde değişkenlerin yapması için bir ofset bile sağlamadı. Yani hayır. Önce onu yeniden yazmalısınız (ki bu da frenlere yol açar) veya kendi iki boyutlu dizinizi yazmalısınız. (!!) Peki, zashib. Ve neden bu? Ve güvende olmam için. (!) Her şey gülüyor. :)))
Doymak için yediğim tek şey bu. :) Ockham isterik..
;)
:))
Evet, dürüst olmak gerekirse, yeniden boyutlandırmanın ek yükü çok fazladır, ancak bu durumlar için OCL kullanmak azaltılabilir.
Ancak iki boyutlu bir dizinin doğrudan OCL arabelleğine kopyalanması.
Ve her hapşırmada diziyi yeniden bölümlendirmeyi tavsiye etmem.
Ve oldukça uygulanabilir.
Doymak için yediğim tek şey bu. :) Ockham isterik..
;)
Hadi, bir sürü bukafınız var, üç fonksiyon set get ve Resize
Hilosohstvuval buradayken sizin için özel olarak dizlerinize tehdit serpiştirin.
Hadi, bir sürü bukafınız var, üç fonksiyon set get ve Resize
Pekala, kim tartışıyor. İşte o zaman operatörlerle aşırı yükleneceğiz (ve "[ ]" operatörünü, sonra sizin lafanızı varsaymayı unutmayacaklar. Piyasadaki dinamik dizilerimizi takas edeceğiz. Ve alacaklar! :)
Unutmayalım ;)
Burada iki boyutlu bir dizim var. Sizeof(My2DArray) var. Peki, arabelleğe kopyalamak için başka neye ihtiyacınız var ??? Her neyse, hiç kimse dizimde değişkenlerin yapması için bir ofset bile sağlamadı. Yani hayır. Önce onu yeniden yazmalısınız (ki bu da frenlere yol açar) veya kendi iki boyutlu dizinizi yazmalısınız. (!!) Peki, zashib. Ve neden bu? Ve güvende olmam için. (!) Her şey gülüyor. :)))
Sevgili, bağlamı takip et.
1) Kontrollü ve güvenli bir ortamdan tamamen kontrolsüz bir ham arabelleğe atladığınızda, o ikili ortamla uyumluluktan siz sorumlusunuz.
2) Kod yazdığınızda, bu kodun mimarisinden siz sorumlusunuz. Ve farklı yapılar kullanırken "bir atı ve titreyen bir geyiği tek bir arabaya dizmek zordur" diye ağlamayın.
3) CLBufferRead ve CLBufferWrite açıklamalarını okumanızı tavsiye ederim - evrensel void* referansı nedeniyle, herhangi bir referans türünü OpenCL'ye aktarmak mümkündür. Ve yer değiştirmeler ve boyutlar var.
Konunun basitçe parmaktan emildiğini görüyorum.