Son zamanlarda çok tartışılan bir konu, Rust'ın C++'dan daha hızlı olup olmadığıdır; bu, C++'ın C'den daha hızlı olup olmadığı konusundaki önceki tartışmanın yerini alır ve bazen Java'dan bile bahsedilir.
Açıkçası: belirli bir kod parçası ne kadar hızlı çalışır. Ve bir mikro kıyaslama durumunda, gerçekten de baktığımız şey bu. Küçük, yalıtılmış kod parçamızın mükemmel şekilde optimize edilmiş bir sürümünü yürütmek için kaç CPU döngüsü gerekiyor?
Ancak biraz uzaklaştığımızda, yaptığımız varsayımların farkına varmamız gerekiyor. Örneğin, mikro-optimize edilmiş kod parçamıza, uzaktan tam hıza yakın bir hızda çalışması için veri sağlayabilir miyiz, yoksa çevreleyen kod onu yavaşlatır mı? Yalnızca gecikmeyle (veya µW) ilgilensek ve verimle ilgilensek bile, büyük olasılıkla gecikmemize tamamen hükmedebilecek çok iş parçacıklı, çok işlemli veya hatta çoklu VM ortamındayız.
Dillerin mikro kıyaslamalarının bocaladığı son kısım, basitçe derleyicilerin ve VM'lerin kalitesidir. Derlenmiş ve JIT'li dillerin çoğunu mikro düzeyde karşılaştırırken, tek fark, koda zorlanan ekstra "kontroller" olacaktır. Örneğin, sınır denetimleri (diziler, tamsayılar) çalışma zamanı cezasına neden olur, ancak bu denetimleri içermeyen kod eşdeğer kod değildir. Sonuç olarak, JIT'in C++'ın üreteceğiyle aynı şekilde en uygun ikili dosyada derlenecek birçok JavaScript kodu örneği vardır.
Performansa bakmanın tamamen farklı ve daha kullanışlı bir yolu, kullanıcıya yönelik SLO'ları formüle ederek üst düzey bir yöntemdir. Bu hedefler karşılandığı sürece, kodu "yeterince hızlı" olarak güvenle ilan edebiliriz.
Veya başka bir deyişle, mükemmel okunabilir üst düzey kod yazarsanız, bu kod ne kadar hızlı olacaktır. Ayrıca, performans açısından kritik kodun ne kadarını kendiniz yazmanız gerekiyor? Bunu, toplam çabanızı “ilk kodlama” ve “optimizasyon” olarak ikiye ayırmak olarak da düşünebilirsiniz .
Bu bağlamda farklılaşmayı görmeye başlıyoruz. Komut dosyasıyla yazılmış diller aniden bir engel oluşturur. Hızlı kod, önceden derlenmiş modüllerde bulunmalı ve genellikle C ile yazılmalıdır.
Ancak, bir engel oluşturan yalnızca komut dosyası dilleri değildir. Tam olarak optimize edilemeyen çalışma zamanı cezalarına neden olan diğer bazı özellikler şunlardır:
Ama denklemin diğer tarafını da unutmayalım. Yani yazdığımız kodun ne kadar hızlı olduğu hakkında akıl yürütebiliriz, ancak bu kodu ne kadar hızlı yazıyoruz?
İş dünyasında her şey paradır ve mühendislerinizin fırsat maliyetini formüle etmek kolay olmasa da, üzerinde düşünmeniz gereken bir şeydir. Ne kadar üretkenseniz, temel maliyet (o çalışanı elde tutmanın size maliyeti ne kadar) ile fırsat maliyeti (bu çalışanın sağladığı değer) arasındaki fark o kadar yüksek olur.
Bu, hızlı kodu ne kadar hızlı yazdığımızı tartışmayı çok zorlaştırıyor çünkü dinamik bir probleme dönüşüyor. Optimize etme kararı iki ana tetikleyiciden gelir:
Mikro düzeyde, düşük performans kalıplarının tanınması, temel programlama yeterliliğinin bir parçası haline geldi. Örneğin, karma haritaların veya ikili aramanın ne zaman kullanılacağını bilmek, bir işe girmek için gerekli hale gelen LeetCode gibi web siteleri aracılığıyla yazılım mühendislerine ayrıntılı olarak öğretildi.
Mimaride aynı kalıpları tanımak çok daha zordur:
Yazılımınızı çevrimiçi olarak dağıtırsanız ve dinamik olarak ölçeklendirmeniz gerekiyorsa, bunların tümü katlanarak daha karmaşık hale gelir.
Kod tabanınızda, sınırlarına göre optimize edebileceğiniz ve optimize etmeniz gereken bileşenler olacaktır. Örneğin, girişleri ayrıştırma ve doğrulama, şifreleme ve karma gibi temel sayısal işlevler, herhangi bir alana özgü matematik ağırlıklı kod (AI, grafikler…). Ama bunları kendin mi yazıyorsun yoksa bu baş ağrısını bir kütüphaneye mi yüklüyorsun?
Ve daha da önemlisi, diğer her şeyle orantılı olarak uygulamayı kodlamak için ne kadar zaman harcıyorsunuz? Projelerimde, kodlama kısmı toplam sürenin %0.5 ila %10'u arasında bir yerde kalıyor. Yani meta düzeyde, kodlamanın verimliliği endişelerimin en küçüğü.
Ayrıca, şirket düzeyinde, özellikle şirketiniz küçükse, belirli bir dil için kolayca yetenek bulma yeteneği, diğer tüm değerlendirmeleri geride bırakmalıdır.
Düşük gecikmeli ticaret yapmıyorsanız, bu durumda, kaydedilen tek bir CPU döngüsü saçma bir miktar paraya dönüşebileceğinden hiçbir şeyin önemi yoktur.
Bu makaleyi okuduğunuz için teşekkür ederiz. Eğlendin mi?
Ben de YouTube'da videolar yayınlıyorum . Sorunuz var mı? Twitter veya LinkedIn'de bana ulaşın .
Bilinç nedir? Yüzyıllardır filozofların ve bilim adamlarının kafasını karıştıran bir sorudur. Bazıları bunun bedenlerimizden bağımsız olarak gerçekten anlayamadığımız geçici bir şey olduğunu söylüyor.
Yıllık ortalama 154 bin dolar maaş ve istikrarlı iş büyümesi ile şimdi blok zinciri geliştirmeyi öğrenmek için ideal zaman. Blok zinciri teknolojilerini oluşturmak ve geliştirmek için blok zinciri geliştiricileri, bilgisayar ağı, kriptografi, algoritmalar ve veri yapıları dahil olmak üzere çeşitli beceriler kullanır.
Doğaya karşı yetiştirme konusundaki tartışma, bu gerçekten sıkıntılı zamanlarda düşünülmesi gereken dikkate değer bir şeydir. Üç farklı kıtada, üç farklı ülkenin vatandaşı olarak en çok kültürle, dille ve kimlikle olan ilişkisine hayran kaldım.
ช่วงนี้ครบ 4 เดือนพอดี ที่ผมได้เริ่มงานกับ SCB 10X ใน ตำแหน่ง Decentralized Finance Product Owner (DeFi PO) ผมเลยอยากเขียน blog เก็บไว้แชร์ประสบการณ์ เพราะหลายๆคนน่าจะมีคำถามว่า ตำแหน่งนี้คืออะไร และ เราทำอะไรกันใน SCB 10X ครับ เผื่อยังไม่รู้จักกันแนะนำตัวสั้นๆกันก่อน ผม ภูมิ นะครับ Tanawat Chiewhawan. Background ผมหลากหลายหน่อย ทำงานมา 3 Industries แล้วครับ เกริ่นมานิดนึงแล้ว เริ่มแชร์ประสบการณ์กันดีกว่า SCB 10X? How did it started for me? จริงๆ ผมเคยได้รู้จัก SCB 10X มาสักพักแล้วตั้งแต่ปี 2018 ตอนที่ยังทำ Petroleum Engineer อยู่ ตอนนั้นได้ยินจากรุ่นพี่ใน Petroleum พูดถึง พี่ต้อง กวีวุฒิ (ex-Venture Builder 10X) เพราะพี่ต้องเองก็เป็นรุ่นพี่ในสาย Petroleum มาก่อน.
Bugün, bazıları akademi ve siyasi yorumlarda olmak üzere, okült ve New Age hareketlerini tarihsel olarak faşizm ve aşırı sağcılığa bağlayan bir düşünce türü var. Benim gibi okültizm hakkında eleştirel bir anlayışla yazsa bile, onun yaygın tarihini ve etkisini - entelektüel, ruhsal, sosyal ve edebiyatta - yakalamak zordur.
Orman yangınlarının gök gürültülü fırtınalara neden olabileceğini biliyor muydunuz? Bulutlara bakmak için zaman ayırmak, bir sözden daha fazlası, hem mevcut hem de yaklaşan hava koşulları hakkında bir bilgi ansiklopedisi sunar. Sürekli mevcudiyetleri ve kötü hava koşullarından sakınmaları nedeniyle genellikle göz ardı edilirler, ancak bir geçit töreninin veya beyzbol oyununun sonundan çok daha fazlasını ifade ederler.