Go 1.20 programlama dili, kodu optimize etmek için profil oluşturucudan gelen bilgileri kullanır.

Saberie

Active member


  1. Go 1.20 programlama dili, kodu optimize etmek için profil oluşturucudan gelen bilgileri kullanır.

Go 1.20 her altı ayda bir yayınlandı. Sürüm, dilin araçlarına ve özelliklerine bazı eklemeler yapar. Derleme sırasındaki profile dayalı optimizasyon özellikle dikkate değerdir.


İşletim sistemine gelince, sürüm, RISC-V üzerinden FreeBSD’ye deneysel bağlantı sunuyor. Aynı zamanda Windows 7, 8, Server 2008 ve 2012 ile macOS 10.13 ve 10.14 ile çalışan en son sürümdür. Go 1.21, en az Windows 10 veya Server 2016 veya macOS 10.15 gerektirir.


Profil oluşturucu derleyici için çalışır


Yeni Profile-Guided Optimization (PGO) veya Feedback-Directed Optimization (FDO) ile derleyici, üretken uygulama veya iş yükü için özel olarak tasarlanmış optimizasyonlar için kodu çevirirken profil oluşturucudan gelen bilgileri kullanır. Örneğin, sık çağrılan işlevleri satır içi işlevler olarak uygulayabilir.

Bunu yapmak için derleyici, Go’nun profil oluşturma açıkken oluşturduğu CPU pprof profillerini kullanır. Blog yazısı, tipik uygulamalar için yüzde üç ila dört performans artışından bahsediyor. PGO şu anda hala önizleme aşamasındadır. Bu nedenle ekip sizi denemeniz için teşvik ediyor, ancak bazı eksikliklerin yine de verimli kullanımı engelleyebileceğini açıklıyor.

Jenerikleri karşılaştırırken daha fazla özgürlük


Dil tarafında, diğer şeylerin yanı sıra, 1.18 sürümünde tanıtılan jenerikler için bir ekleme var. Tür kısıtlaması için comparable Kesin olarak karşılaştırılabilir türler olmayan ve potansiyel olarak bir çalışma zamanı hatasına yol açabilen karşılaştırılabilir türlere de artık izin verilmektedir.


Bu, arayüzlerin karşılaştırmalar için kullanılmasına izin verir, örneğin anahtarlar gibi. map kullanmak. Gibi bileşik türleri bile structsadece yakından karşılaştırılabilir türleri değil, aynı zamanda arayüzleri de içeren, artık şu şekilde mevcuttur: comparable izin vermek.

Dilimleri dönüştürme


Go 1.17’den beri dilimler dizi işaretçilerine dönüştürülebilir. Geçerli sürüm artık bir dilimin bir diziye doğrudan atanmasına izin veriyor. İşaretçi dönüştürmenin aksine, dizi içeriğin bir kopyasını içerir. Dilimin uzunluğu dizinin uzunluğundan azsa, Go belgelerindeki basit örnekte olduğu gibi, atama bir çalışma zamanı hatasına neden olur:


s := make([]byte, 2, 4)

a0 := [0]byte(s)
a1 := [1]byte(s[1:]) // a1[0] == s[1]
a2 := [2]byte(s) // a2[0] == s[0]
a4 := [4]byte(s) // panics: len([4]byte) > len(s)


Bir başka yenilik de dilimlerle ilgili: ambalaj unsafe düşük seviyeli programlama fonksiyonları için sürüm ile fonksiyonları alacaktır SliceData, String VE StringData dize ve dilim manipülasyonu için.

Yine de bahsetmeye değer goaraç artık önceden derlenmiş standart kitaplık paketleri gerektirmez. Bunun yerine, bu paketler artık normal paketler gibi talep üzerine oluşturuluyor ve yapı önbelleğinde saklanıyor. Ayrıca, araç şunları yapabilir: cover Mevcut sürümle, yalnızca birim test kapsamı profilleri oluşturmakla kalmaz, aynı zamanda entegrasyon ve uygulama testlerinin daha karmaşık uygulamalarını da oluşturabilirsiniz.

Go 1.20’deki diğer yeni özellikler Go blogunda bulunabilir.Sürüm notları eksiksiz bir genel bakış sağlar. Çeşitli işletim sistemleri ve mimariler için kaynak kodu ve ikili dosyalar indirme sayfasında mevcuttur. Mevcut sürümü kendiniz derlemek istiyorsanız, en azından Go 1.17.13 kullanmanız gerekir.

Ayrıca bakınız:


(rm)



Haberin Sonu
 
Üst